发布于2020-02-10 15:48 阅读(606) 评论(0) 点赞(29) 收藏(2)
此模式通过一个模板方法来定义程序的框架或算法,通常模板方法定义在基类中,即原始的模板,然后子类就可以根据不同的需要实现或重写模板方法中的某些算法步骤或者框架的某部分,最后达到使用相同模板实现不同功能的效果。
核心思想:
主要角色:
优缺点:
模板方法运用案例--钩子
钩子是在基类中声明的方法,并且在模板方法中使用它,通常是给它定义好一个默认的实现,钩子的思想是为子类提供一个按需“钩取”的能力,因此如果子类不想使用钩子,则可以忽略钩子的相关实现。
简单示例:
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()
作者:听爸爸的话
链接:https://www.pythonheidong.com/blog/article/230895/f0383eb4d267c94c87ff/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!