zoukankan      html  css  js  c++  java
  • 大话设计模式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/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    20135326、20135303linux实验二实验报告
    家庭作业汇总
    信息安全系统设计基础第十周学习总结
    信息安全系统设计基础第十二周总结
    20135326王亦可信息安全系统设计基础期末总结
    第十一周学习总结
    20135326、20135303linux实验四实验报告
    20135326、20135303linux实验一实验报告
    第十四周学习笔记
    20135326、20135303linux实验三实验报告
  • 原文地址:https://www.cnblogs.com/onepiece-andy/p/python-template-method-pattern.html
Copyright © 2011-2022 走看看