大话设计模式Python实现-模板方法模式
2024-09-06 03:02:58
模板方法模式(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/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
最新文章
- 【zz】matlab 腐蚀膨胀算法
- IosPush推送通知的实现
- 甲鱼od19篇随笔
- VM 虚拟机 Error 1324. The path My Documents contains a invalid chara 。
- 六、saltstack的module组件
- myeclipse 配置svn资源库
- salt 批量部署与配置
- 3月31日学习笔记(HTML基础)
- MySQL --slave-skip-errors
- 使用linux系统做路由转发
- 结构-行为-样式-angularJs ngAnimate(Js实现)
- JavaScript数组操作总结
- MacOS下Rails+Nginx+SSL环境的搭建(下)
- python第九十天----jquery
- git根据用户过滤提交记录
- PopupWindows 在2.3.3下报java.lang.NullPointerException
- day3-课堂笔记
- Qt qDebug() 的使用方法
- ONVIFclient搜索设备获取rtsp地址开发笔记(精华篇)
- 关于C++中using namespace std