Python设计模式:模板模式
设计模式十七:模板模式
什么是模板模式
编写优秀代码的一个要素是避免冗余;
模式关注的是消除代码冗余;
无需改变算法结构就能重新定义一个算法的某些部分。
使用场景
发现结构相近的算法中有重复代码,则可以把算法的不变部分留在一个模板方法中,把易变的部分移动到动作/钩子方法中。
典型案例
工人的日常
所有工人都遵从或多或少相同的例行流程,但例行流程的某些特定部分区别又很大。
实例代码
from cowpy import cow # 艺术字符def dots_style(msg):msg = msg.capitalize()msg = '.'*10 + msg +'.'*10return msgdef admire_style(msg):msg = msg.upper()return '!'.join(msg)def cow_style(msg):msg = cow.milk_random_cow(msg)return msgdef generate_banner(msg,style=dots_style): # 模板函数 print('-- start of banner --')print(style(msg))print('-- end of banner --\n\n')def main():msg = 'happy coding'[generate_banner(msg,style) for style in (dots_style,admire_style,cow_style)]if __name__ == "__main__":main()
Python设计模式:模板模式相关推荐
- Python设计模式-建造者模式
Python设计模式-建造者模式 代码基于3.5.2,代码如下; #coding:utf-8 #建造者模式 class Burger():name = ""price = 0.0d ...
- Python设计模式-状态模式
Python设计模式-状态模式 代码基于3.5.2,代码如下; #coding:utf-8 #状态模式class state():def writeProgram(self,work):raise N ...
- Python设计模式-备忘录模式
Python设计模式-备忘录模式 代码基于3.5.2,代码如下; #coding:utf-8 #备忘录模式 import randomclass gameCharacter():vitality = ...
- Python设计模式-解释器模式
Python设计模式-解释器模式 代码基于3.5.2,代码如下; #coding:utf-8 #解释器模式class PlayContext():play_text = Noneclass Expre ...
- Python设计模式-命令模式
Python设计模式-命令模式 代码基于3.5.2,代码如下; #coding:utf-8 #命令模式class barbecuer():def bakeButton(self):print(&quo ...
- Python设计模式-策略模式
Python设计模式-策略模式 代码基于3.5.2,代码如下; #coding:utf-8 #策略模式class sendInterface():def send(self,value):raise ...
- Python设计模式-外观模式
Python设计模式-外观模式 代码基于3.5.2,代码如下; #coding:utf-8 # 外观模式class AlarmSensor:def run(self):print("Alar ...
- Python设计模式-桥接模式
Python设计模式-桥接模式 基于Python3.5.2,代码如下 #coding:utf-8class Shape():name = ""param = "" ...
- Python设计模式-代理模式
Python设计模式-代理模式 基于Python3.5.2,代码如下 #coding:utf-8info_struct = dict() info_struct["addr"] = ...
- 12. 星际争霸之php设计模式--模板模式
题记 ============================================================================== 本php设计模式专辑来源于博客(jy ...
最新文章
- python用什么开发平台_一般来说,python平台开发有什么作用?
- jvm高并发_在JVM上对高并发HTTP服务器进行基准测试
- gwt格式_GWT –利弊
- 前端学习(1802):前端调试之事件伪类
- iOS App图标和启动画面尺寸
- 垃圾回收算法与实现系列-锁在Java虚拟机中的实现和优化
- 机械加工工艺师手册_机械加工中车、刨、铣、镗、磨、钻、线切割等设备,你知道哪些?...
- eclipse ARM/AARCH64版本下载
- android自动点击相应位置脚本,轻易连使用说明-自动连点器-安卓自动点击脚本 | MOS86...
- 智能制造与大数据平台
- 华北计算机系统工程研究所 韩庆,华北电力大学学报(自然科学版)
- 三做一年级算术题-吐槽挖雷
- mac使用的pd虚拟机window黑屏 ---已解决
- windows中安装绿色版的mysql
- Linux 驱动程序介绍
- 大数据在医疗行业中的5种应用
- 计算机开机黑屏90,终于晓得笔记本电脑开机黑屏检修步骤
- 生活指南:IT人士健康生活应多吃的几种食物
- Camtasia2020视频录制软件的安装及pj顶级屏幕录像视频编辑软件
- mediawiki修改用mysql数据库_修改MediaWiki的动态页面列表DPL设置降低MySQL负载