[Design Pattern]Python设计模式——模板模式
来源:互联网 发布:红警2 mac os10.12 编辑:程序博客网 时间:2024/06/06 00:44
1.模版方法模式
做题的列子:
需求:有两个学生,要回答问题,写出自己的答案
#encoding=utf-8class StudentA(): def answer1(self): print '题目一:XXXXXX' print '我的答案是:B' def answer2(self): print '题目一:XXXXXX' print '我的答案是:B'class StudentB(): def answer1(self): print '题目一:XXXXXX' print '我的答案是:C' def answer2(self): print '题目一:XXXXXX' print '我的答案是:D'if __name__=='__main__': student_a=StudentA() student_a.answer1() student_a.answer2() student_b=StudentB() student_b.answer1() student_b.answer2()
这样写的确定是重复的东西太多了,例如写题目,例如“我的答案是”等等,如果我们需要创建很多个studentX类,万一某一天需要改题目,就要改动很多东西,
所以模版方法模式的宗旨就是,所有重复的东西,即需要写两次以上的东西都放在一个模版里面(可以是父类,也可以是一个函数)
模版方法的实现:
#encoding=utf-8class Student(): def answer1(self): print 'Q1:XXX' print 'A1:%s' %self.get_answer1() def get_answer1(self): return 'A' def answer2(self): print 'Q2:XXX' print 'A2:%s'% self.get_answer2() def get_answer2(self): return 'A'class StudentA(Student): def get_answer1(self): return 'B' def get_answer2(self): return 'B'class StudentB(Student): def get_answer1(self): return 'C' def get_answer2(self): return 'D'if __name__=='__main__': student_a=StudentA() student_a.answer1() student_a.answer2() student_b=StudentB() student_b.answer1() student_b.answer2()
这里使用了的一个技巧是,可以在父类定义一个公共的方法,然后子类重写这个方法来实现子类之间的差异化。
总结:
这个其实就是把多个类中共有的东西给抽出来,作为抽象类
阅读全文
0 0
- [Design Pattern]Python设计模式——模板模式
- 设计模式学习—模板模式(Template Design Pattern)
- [Design Pattern]Python设计模式——代理模式
- [Design Pattern]Python设计模式——状体模式
- [Design Pattern]Python设计模式——设计原则
- [Design Pattern]Python设计模式——工厂方法
- Design Pattern Template 模板设计模式
- 设计模式—模板模式(Template Pattern)
- 【design pattern】行为型模式之—模板方法设计模式(Template method)
- Design pattern设计模式
- Design Pattern, 设计模式
- 设计模式(Design Pattern)
- 设计模式学习—外观模式(Facade Design Pattern)
- 设计模式学习—适配器模式(Adapter Design Pattern)
- 设计模式学习—享元模式(Flyweight Design Pattern)
- 设计模式学习—代理模式(Proxy Design Pattern)
- 设计模式学习—迭代器模式(Iterator Design Pattern)
- 设计模式学习—中介者模式(Mediator Design Pattern)
- 重温python基础7:字符串操作
- 人听3踢人3
- [Design Pattern]Python设计模式——设计原则
- [Design Pattern]Python设计模式——代理模式
- 快讯:北京大学领导班子出现新变化,混混儿不见了
- [Design Pattern]Python设计模式——模板模式
- jBPM4
- [Design Pattern]Python设计模式——状体模式
- ActiveMQ
- Go语言实现文本文件拷贝
- 2017 Multi-University Training Contest 6 solutions BY 福州大学
- cmmi3
- 公主的朋友
- [多校联训] 就