t56次列车,我家狐狸狗,后来的我们
此模式通过一个模板方法来定义程序的框架或算法,通常模板方法定义在基类中,即原始的模板,然后子类就可以根据不同的需要实现或重写模板方法中的某些算法步骤或者框架的某部分,最后达到使用相同模板实现不同功能的效果。
核心思想:
主要角色:
优缺点:
模板方法运用案例--钩子
钩子是在基类中声明的方法,并且在模板方法中使用它,通常是给它定义好一个默认的实现,钩子的思想是为子类提供一个按需“钩取”的能力,因此如果子类不想使用钩子,则可以忽略钩子的相关实现。
简单示例:
from abc import abcmeta, abstractmethod class template(metaclass=abcmeta): """接口:模板类""" @abstractmethod def operation_1(self): pass @abstractmethod def operation_2(self): pass def template_func(self): """模板方法:定义好具体的算法步骤或框架""" self.operation_1() self.operation_2() class subobj1(template): """子类1:按需重新定义模板方法中的算法操作""" def operation_1(self): print('subobj1.operation_1()') def operation_2(self): print('subobj1.operation_2()') class subobj2(template): """子类2:按需重新定义模板方法中的算法操作""" def operation_1(self): print('subobj2.operation_1()') def operation_2(self): print('subobj2.operation_2()') if __name__ == '__main__': subobj1().template_func() subobj2().template_func()
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
新手学习Python2和Python3中print不同的用法
Python基于os.environ从windows获取环境变量
网友评论