1.模版方法模式

做题的列子:

需求:有两个学生,要回答问题,写出自己的答案

#encoding=utf-8
__author__ = 'kevinlu1010@qq.com' class 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-8
__author__ = 'kevinlu1010@qq.com' class Student():
def answer1(self):
print '题目一:XXXXXX'
print '我的答案是:%s'%self.get_answer1()
def get_answer1(self):
return 'A'
def answer2(self):
print '题目一:XXXXXX'
print '我的答案是:%s'%self.get_answer2()
def get_answer2(self):
return 'A'
class StudentA():
def get_answer1(self):
return 'B'
def get_answer2(self):
return 'B' class StudentB():
def answer1(self):
return 'C'
def 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()

这里使用了的一个技巧是,可以在父类定义一个公共的方法,然后子类重写这个方法来实现子类之间的差异化。

Python设计模式——模版方法模式的更多相关文章

  1. [Head First设计模式]云南米线馆中的设计模式——模版方法模式

    系列文章 [Head First设计模式]山西面馆中的设计模式——装饰者模式 [Head First设计模式]山西面馆中的设计模式——观察者模式 [Head First设计模式]山西面馆中的设计模式— ...

  2. 设计模式——模版方法模式详解(论沉迷LOL对学生的危害)

    .  实例介绍 在本例中,我们使用一个常见的场景,我们每个人都上了很多年学,中学大学硕士,有的人天生就是个天才,中学毕业就会微积分,因此得了诺贝尔数学奖:也有的人在大学里学了很多东西,过得很充实很满意 ...

  3. Java设计模式の模版方法模式

    概述 模板方法模式是类的行为模式.准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑.不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的 ...

  4. 24种设计模式--模版方法模式【Template Method Pattern】

    周三,9:00,我刚刚坐到位置,打开电脑准备开始干活.“小三,小三,叫一下其它同事,到会议室,开会”老大跑过来吼,带着淫笑.还不等大家坐稳,老大就开讲了,“告诉大家一个好消息,昨天终于把牛叉模型公司的 ...

  5. Python设计模式——工厂方法模式(FactoryMethod)

    需求:有一个学雷锋活动,有买米和扫地两个内容,参与的人有大学生和社区志愿者,他们各自的方法不一样. 如果用简单工厂模式实现: #encoding=utf-8 __author__ = 'kevinlu ...

  6. 【java设计模式】(10)---模版方法模式(案例解析)

    一.概念 1.概念 模板方法模式是一种基于继承的代码复用技术,它是一种类行为型模式. 它定义一个操作中的算法的骨架,而将一些步骤延迟到子类中.模板方法使得子类可以不改变一个算法的结构即可重定义该算法的 ...

  7. [Python设计模式] 第10章 怎么出试卷?——模版方法模式

    github地址:https://github.com/cheesezh/python_design_patterns 题目 小时候数学老师的随堂测验,都是老师在黑板上写题目,学生在下边抄,然后再做题 ...

  8. NET设计模式 第二部分 行为型模式(15):模版方法模式(Template Method)

    摘要:Template Method模式是比较简单的设计模式之一,但它却是代码复用的一项基本的技术,在类库中尤其重要. 主要内容 1.概述 2.Template Method解说 3..NET中的Te ...

  9. Head First 设计模式笔记(模版方法模式)

    1.定义: 在一个方法中定义一个算法骨架,而将一些步骤延迟到子类中.模版方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤. 2.类图:  3.说明: 模版方法可以理解为一个方法里面包 ...

随机推荐

  1. C++如何用system命令获取文件夹下所有文件名

    http://www.cplusplus.com/reference/cstdlib/system/ http://bbs.csdn.net/topics/30068943 #include < ...

  2. 分布式应用处理方式 - Remoting

    分布式应用程序 所谓分布式计算是一门计算机科学,它研究如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给许多计算机进行处理,最后把这些计算结果综合起来得到最终的结果. ...

  3. 手把手教你使用UICollectionView写公司的项目

    在很多app中都有这样通用的页面,一直没有机会使用UICollectionView,只是简单的看过他的使用方法.今天公司美工出图,使用了他,并且遇到了好多的坑.记录一下过程,不确定使用的方法是不是最优 ...

  4. 数据结果与算法分析(1)——算法分析

          在确定一个算法正确的同时,也要保证算法的有效性.算法分析的最重要的标准时运行时间T(N),运行时间与输入元素个数N有关. 数学基础         T(N) = O(f(N)) 表示T(N ...

  5. Js 替代

    替代全部:.replace(/#/g,"/") 替代第一个:.replace("#","/")    var regS = new RegE ...

  6. nginx笔记----安装

    nginx的安装 ./configure make && make install (一)准备条件: 1.GCC---gun编译器集合 Nginx是一个由C语言编写的程序,因此首先需要 ...

  7. hihocoder 1186

    1186 : Coordinates 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Give you two integers P and Q. Let all div ...

  8. Android开发常见问题及解决方法

    http://blog.csdn.net/silangquan/article/details/8104414

  9. Android——获取网络图片

    布局 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:too ...

  10. easyui-prompt弹出框操作

    效果图如下: 代码如下: $(document).ready(function () { //绑定按钮操作 $('#btnMove').click(function () { var ids = ge ...