这篇文章完全摘录自别人,等后续,基于自己在项目中的应用,再重新写一下。

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

demo

下面是一个模板方法模式的一个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()

运行结果如下:

试卷A

题目1

答案A1

题目2

答案A2

试卷B

题目1

答案B1

题目2

答案B2

应用的注意点

不能用私有方法,作为模板的子方法。因为继承关系,子类无法改写这个方法

python模板怎么写_模板模式-Python相关推荐

  1. python测试代码怎么写_如何使用python做单元测试?

    很多编程小白不太理解单元测试,为什么要进行单元测试呢?很简单,主要是提高代码的正确,同时确保重构不出错.接下来我们一起学习怎么用python做单元测试吧. python内置了一个unittest,但是 ...

  2. python如何开发网站_如何用Python写一个小网站?

    一.准备 python基础相关准备:pygame的基础知识,参考目光博客的"用Python和Pygame写游戏-从入门到精通"安python 3.8.0 在python官网下载,不 ...

  3. python脚本开头怎么写_浅谈Python脚本开头及导包注释自动添加方法

    浅谈Python脚本开头及导包注释自动添加方法 1.开头:#!/usr/bin/python和# -*- coding: utf-8 -*-的作用 – 指定 #!/usr/bin/python 是用来 ...

  4. 学python应该掌握的英语单词怎么写_想学Python但是有好多英语单词不认识,Python的常见英语单词都在这儿...

    想学python但是有好多英文单词不认识怎么办? 以下是python代码编写和提示信息中的常用和常见的英文单词. 不需要背,看得多了用到的多了就熟悉了. 另外,我为大家准备了2020最新的学习资料,路 ...

  5. python编程手机游戏_有哪些python写的游戏

    展开全部 python编程32313133353236313431303231363533e59b9ee7ad9431333433646531游戏有哪些?下面给大家介绍几款由Python开发的游戏: ...

  6. python模块下载过程_常用的python模块及安装方法

    bsddb3:BerkeleyDB的连接组件 Cheetah-1.0:我比较喜欢这个版本的cheetah cherrypy:一个WEB framework ctypes:用来调用动态链接库 DBUti ...

  7. python一键安装神器_一键安装python

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 去年有出一个python整的lamp自动安装,不过比较傻,直接调用的yum 去安 ...

  8. 学习python最好的书籍_最好的Python书籍

    学习python最好的书籍 Python is an amazing programming language. It can be applied to almost any programming ...

  9. python bottle框架搭建_[深度分析] Python Web 开发框架 Bottle

    Bottle 是一个非常精致的WSGI框架,它提供了 Python Web开发中需要的基本支持:URL路由,Request/Response对象封装,模板支持,与WSGI服务器集成支持.整个框架的全部 ...

最新文章

  1. 临床模型评价:C指数(C-Index)、校正曲线(Calibration plot)、决策分析曲线(Decision Curve Analysis, DCA)、NRI指数
  2. C#调用DataV token代码
  3. 火星坐标、百度坐标、WGS84坐标转换代码(JS、python版)
  4. JS 做的鼠标放大镜(初级)
  5. python常用英语单词-3天教你掌握Python必备常用英语词汇
  6. Dubbo 源码分析 - 集群容错之 LoadBalance
  7. spring mvc + freemarker 整合
  8. ***学习笔记教程五:***技术
  9. Java 调用 Caffe_解决 free(): invalid pointer: 0x00000000019ff700 运行时报错(caffe)(libtool使用)...
  10. AI算法连载10:统计之k 近邻法
  11. 初创企通过哪里报名可参与赛事活动
  12. es6 原生构造函数的继承
  13. 在Blazor中构建数据库应用程序——第5部分——查看组件——UI中的CRUD列表操作
  14. 软件著作权提交源代bai码格式_软件著作权使用说明书字体要求-软件著作权提交源代码格式要求...
  15. SEO和SEM的区别是什么
  16. 2021最新城市人才引进计划!硕博满满的福利!
  17. android 投屏 版本号,安卓设备投屏画质模糊及投屏延迟的调整方法
  18. 合唱队形java_动态规划练习题-合唱队形
  19. 小程序—九宫格心形拼图
  20. Linux下文件备份和同步的工具软件

热门文章

  1. SpringBoot之——热部署的两种方式
  2. 微信小程序图片上传oss
  3. 拓嘉辰丰电商:拼多多订单漏发怎么处理比较好
  4. openfire 下载安装
  5. Failed to import package with error: Couldn't decompress package的解决方案
  6. ICLR 2022杰出论文奖出炉!清华、人大获奖!浙大提名
  7. 赛门铁克:网络间谍组织Buckeye将攻击目标转至中国香港
  8. 分布式系统二、MogileFS
  9. 推荐9个最顶级的IT公众号
  10. 什么是电商ERP,有什么作用