模板方法模式(Template Method Pattern):定义一个操作中的算法骨架,将一些步骤延迟至子类中.模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

下面是一个模板方法模式的一个demo:

 #!/usr/bin/env python
# -*- coding:utf-8 -*- __author__ = 'Andy'
"""
大话设计模式
设计模式——模板方法模式
模板方法模式(Template Method Pattern):定义一个操作中的算法骨架,将一些步骤延迟至子类中.模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤
使用场景:当不变和可变的行为在方法的子类实现中混合在一起时,不变的行为就会在子类中重复出现,用模板方法模式把这些不变的行为搬到单一的地方,帮助子类摆脱重复不变的行为纠缠
""" class NewPaper(object): def question1(self):
print "题目1"
print self.answer1() def question2(self):
print "题目2"
print self.answer2() def answer1(self):
return '' def answer2(self):
return '' class TestPaperA(NewPaper): def answer1(self):
return '答案A1' def answer2(self):
return '答案A2' class TestPaperB(NewPaper): def answer1(self):
return '答案B1' def answer2(self):
return '答案B2' if __name__ == '__main__':
test1 = TestPaperA()
test2 = TestPaperB()
print "试卷A"
test1.question1()
test1.question2()
print "试卷B"
test2.question1()
test2.question2()

上面类的设计如下图:

NewPaper是抽象类,定义抽象模板并实现了抽象模板方法,TestPaper实现父类的一个或多个抽象方法

当不变和可变的行为在子类的方法中混合在一起时,不变的行为就会在子类中重复出现,通过模板方法模式把这些行为搬到单一的地方,帮助子类摆脱重复的不变行为的纠缠

作者:Andy
出处:http://www.cnblogs.com/onepiece-andy/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

最新文章

  1. 【zz】matlab 腐蚀膨胀算法
  2. IosPush推送通知的实现
  3. 甲鱼od19篇随笔
  4. VM 虚拟机 Error 1324. The path My Documents contains a invalid chara 。
  5. 六、saltstack的module组件
  6. myeclipse 配置svn资源库
  7. salt 批量部署与配置
  8. 3月31日学习笔记(HTML基础)
  9. MySQL --slave-skip-errors
  10. 使用linux系统做路由转发
  11. 结构-行为-样式-angularJs ngAnimate(Js实现)
  12. JavaScript数组操作总结
  13. MacOS下Rails+Nginx+SSL环境的搭建(下)
  14. python第九十天----jquery
  15. git根据用户过滤提交记录
  16. PopupWindows 在2.3.3下报java.lang.NullPointerException
  17. day3-课堂笔记
  18. Qt qDebug() 的使用方法
  19. ONVIFclient搜索设备获取rtsp地址开发笔记(精华篇)
  20. 关于C++中using namespace std

热门文章

  1. 关于unittest单元测试框架中常用的几种用例加载方法
  2. 【分布式存储】Glusterfs快速搭建
  3. 史上最全的Java命名规范[转]
  4. ASP.NET MVC IOC依赖注入之Autofac系列开篇
  5. 怎么将PDF转换成DWG?试试这两种方法
  6. export default和export的使用
  7. vuejs之路由应用之二
  8. [20190823]关于CPU成本计算3.txt
  9. TypeScript 学习笔记(一)
  10. RdKafka文档翻译