大话设计模式Python实现-模板方法模式

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

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

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 
 4 __author__ = 'Andy'
 5 """
 6 大话设计模式
 7 设计模式——模板方法模式
 8 模板方法模式(Template Method Pattern):定义一个操作中的算法骨架,将一些步骤延迟至子类中.模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤
 9 使用场景:当不变和可变的行为在方法的子类实现中混合在一起时,不变的行为就会在子类中重复出现,用模板方法模式把这些不变的行为搬到单一的地方,帮助子类摆脱重复不变的行为纠缠
10 """
11 
12 class NewPaper(object):
13 
14     def question1(self):
15         print "题目1"
16         print self.answer1()
17 
18     def question2(self):
19         print "题目2"
20         print self.answer2()
21 
22     def answer1(self):
23         return ''
24 
25     def answer2(self):
26         return ''
27 
28 
29 class TestPaperA(NewPaper):
30 
31     def answer1(self):
32         return '答案A1'
33 
34     def answer2(self):
35         return '答案A2'
36 
37 
38 class TestPaperB(NewPaper):
39 
40     def answer1(self):
41         return '答案B1'
42 
43     def answer2(self):
44         return '答案B2'
45 
46 
47 if __name__ == '__main__':
48     test1 = TestPaperA()
49     test2 = TestPaperB()
50     print "试卷A"
51     test1.question1()
52     test1.question2()
53     print "试卷B"
54     test2.question1()
55     test2.question2()

上面类的设计如下图:

 

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

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


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

posted @ 2017-11-07 10:30  Andy冉明  阅读(1363)  评论(0编辑  收藏  举报