Python设计模式:模板方法模式
发布时间:2020-12-20 10:06:37 所属栏目:Python 来源:网络整理
导读:此模式通过一个模板方法来定义程序的框架或算法,通常模板方法定义在基类中,即原始的模板,然后子类就可以根据不同的需要实现或重写模板方法中的某些算法步骤或者框架的某部分,最后达到使用相同模板实现不同功能的效果。 核心思想: 使用一个模板方法定义
此模式通过一个模板方法来定义程序的框架或算法,通常模板方法定义在基类中,即原始的模板,然后子类就可以根据不同的需要实现或重写模板方法中的某些算法步骤或者框架的某部分,最后达到使用相同模板实现不同功能的效果。 核心思想:
主要角色:
优缺点:
模板方法运用案例--钩子 ? ? 钩子是在基类中声明的方法,并且在模板方法中使用它,通常是给它定义好一个默认的实现,钩子的思想是为子类提供一个按需“钩取”的能力,因此如果子类不想使用钩子,则可以忽略钩子的相关实现。 简单示例: from abc import ABCMeta,abstractmethod class Template(metaclass=ABCMeta): """接口:模板类""" @abstractmethod def operation_1(self): pass @abstractmethod operation_2(self): pass template_func(self): 模板方法:定义好具体的算法步骤或框架 self.operation_1() self.operation_2() class SubObj1(Template): 子类1:按需重新定义模板方法中的算法操作""" print('SubObj1.operation_1()') SubObj1.operation_2()) SubObj2(Template): 子类2:按需重新定义模板方法中的算法操作SubObj2.operation_1()SubObj2.operation_2()if __name__ == __main__: SubObj1().template_func() SubObj2().template_func() ? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |