python设计模式(十四):模板方法模式

定义一个算法或者流程,部分环节设计为外部可变,用类似于模板的思想来实例化一个实体,可以往模板中填充不同的内容;在模板思想下,实体的整体框架是确定的,他是一个模板,但是模板下内容可变,从而实现了动态的更新流程或算法。


示例code:

# encoding=utf-8

"""实现一个客户点单后的处理流程流程"""


class User:

def __init__(self, name, shop, times, number):
self.name = name
self.shop = shop
self.times = times
self.number = number


class Handle:

def __init__(self, user=None):
self.user = user

def Invoicen(self):
"""打印小票"""
string = "打印小票" \
"客户:{}" \
"商品:{}" \
"数量:{}" \
"时间:{}".format(self.user.name, self.user.shop, self.user.number, self.user.times)
print(string)

def Make(self):
"""开始制作"""
print("制作完成:{} 数量:{}".format(self.user.shop, self.user.number))

def run(self):
self.Invoicen()
self.Make()


if __name__ == '__main__':
test = Handle()
xiaoming = User("小明""汉堡""17:50""5")
test.user = xiaoming
test.run()
------------------
打印小票客户:小明商品:汉堡数量:5时间:17:50
制作完成:汉堡 数量:5


看了模板方法后,感觉和之前的一个设计模式比较相似《python设计模式(二):建造者模式》,但是建造者模式是将对象的构建和表示分离,相同的构建生成不同的表示对象,而模板方法是将定义的算法或流程中的部分环节推迟到子类中实现算法或流程的可变,这是二者本质的区别。


2019-03-17-22_09_33.png


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/279880.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FirstBird--项目流程

创建项目(英文路径)—–img图片文件创建窗体–设置大小(Basic—size–>320*480)—最大化功能禁用(Expert–>setResizable(false))添加面板–设置布局方式(set Layout—>AbsoluteLayout)自己创建面板 GameMain中将Jpanel1改为WinJpanel–创建对应类–>extends JPane…

PeeringDB初探

做网络相关工作的,可能需要了解PeeringDB这个网站(https://www.peeringdb.com), 这里有大部分公开注册的 ASN(Autonomous System Number) 以及他们相互直接做Peering的信息,这也是这个网站名字的由来。据统计&#xff…

网站排障分析命令

系统连接状态篇:1.查看TCP连接状态netstat-nat|awk{print$6}|sort|uniq-c|sort-rnnetstat-n|awk/^tcp/{print$NF}|sort|uniq-c|sort-rnnetstat-ant|awk{print$NF}|grep-v[a-z]|sort|uniq-c2.查找请求数请20个IP(常用于查找攻来源)&#xff1a…

修复windows脸部识别_如何在Windows 10中改善面部识别

修复windows脸部识别If you have the right hardware, Windows 10 lets you unlock your computer with nothing but a smile. However, Microsoft’s facial recognition isn’t always spot-on. Here’s how to help Windows recognize you better. 如果您拥有合适的硬件&…

使用组策略推送exchange自签名证书

一、导出证书打开证书颁发机构,在证书服务器上面选属性,然后按照下图进行导出操作。 在选择格式时按照上图标识选择。 二、导入证书新建一个组策略,在计算机配置-策略-windows设置-安全设置-公钥策略中选中“受信任的根证书颁发机构”并新建导…

基于.NetCore开发,前端支持Layui、React、Vue且前后端分离的快速开发框架

今天给大家推荐一个基于.Net Core开发的,前端框架支持Layui、React、Vue,并且前端和后端都支持代码一键生成,用于项目开发,可极大的提升开发效率。项目简介这是基于.net core的快速开发框架,前端框架可以根据自己需求选…

PHP常用工具方法集...

PHP常用工具方法集&#xff0c;更新时间 2018-7-14 <?php /*** 常用工具方法集* Author: zj*//** 工具总述 1.加密解密 2.生成随机字符串 3.获取文件扩展名&#xff08;后缀&#xff09; 4.文件大小格式化 5.替换标签字符 6.列出目录下的文件名 7.获取当前页面URL 8.让浏览…

一题多解 面试题

最近在其他论坛上看到几个网友的面试题&#xff0c;这些天&#xff0c;QQ群内的人都在讨论怎么解答才最简单&#xff0c;下面列出题目&#xff1a; 文件a&#xff1a; 文件b: a b c a b c b c a b c a c b a …

什么是Google On.Here,以及如何设置?

Google Wi-Fi is similar to other mesh Wi-Fi systems, but one big feature separates it from the pack: Google On.Here. Google Wi-Fi与其他网状Wi-Fi系统相似&#xff0c;但其中一个重要功能将其与众不同&#xff1a;Google On.Here。 发生什么了&#xff1f; (What Is O…

一张图看懂 SQL 的各种 join 用法

原文链接https://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins 转载于:https://www.cnblogs.com/xuchao0506/p/10559951.html

1Python全栈之路系列Web框架介绍

Python全栈之路系列之Web框架介绍 所有的语言Web框架本质其实就是起一个socket服务端,监听一个端口,然后运行起来 Web框架包含两部分,一部分是socket,另外一部分是业务的逻辑处理,根据请求的不同做不同的处理 Python的Web框架分成了两类, 即包含socket也包含业务逻辑处理的(tor…

『 再看.NET7』数值类型

在C#中&#xff0c;有int16&#xff0c;用short来定义&#xff1b;有int32&#xff0c;用int定义&#xff1b;用int64&#xff0c;用long来定义。在.NET7中&#xff0c;添加了int128&#xff0c;和unint128&#xff0c;位数更大的整型。var i16 short.MaxValue; Console.Write…

获取帮助命令

whatis 基于数据库的查找,查找内容比较慢 优点&#xff1a;查找速度快 缺点&#xff1a;没有实时性 [rootlocalhost ~]# whatis ls ls (1) - list directory contents ls (1p) - list directory contents 数据库文件 Centos6:/…

笔记本电脑升级固态硬盘好吗_如何升级笔记本电脑硬盘

笔记本电脑升级固态硬盘好吗Upgrading your laptop’s hard drive is a great way to get some extra life out of an old machine (or resurrect a dead one). Read on as we walk you through the prep work, the installation, and the followup. 升级笔记本电脑的硬盘驱动器…

购物单

小明刚刚找到工作&#xff0c;老板人很好&#xff0c;只是老板夫人很爱购物。老板忙的时候经常让小明帮忙到商场代为购物。小明很厌烦&#xff0c;但又不好推辞。 这不&#xff0c;XX大促销又来了&#xff01;老板夫人开出了长长的购物单&#xff0c;都是有打折优惠的。 …

Seay源代码审计系统

这是一款基于C#语言开发的一款针对PHP代码安全性审计的系统&#xff0c;主要运行于Windows系统上。这款软件能够发现SQL注入、代码执行、命令执行、文件包含、文件上传、绕过转义防护、拒绝服务、XSS跨站、信息泄露、任意URL跳转等漏洞。 下载链接 https://pan.baidu.com/s/1V…

dotnet 世界猜测 随机数的小测试

这是一个半技术向的博客&#xff0c;主题来源于我读过的某本书的片段&#xff0c;这是一个稍稍有些前置知识的故事&#xff0c;主题的大概内容就是假定世界存在某个规则序列&#xff0c;通过一代代的探索&#xff0c;可以获取到此序列的内容。本文将模拟此情形&#xff0c;写一…

python 批量修改密码

下午闲来无事&#xff0c;就搞个批量密码修改工具玩玩... #!/usr/bin/env python import paramiko import time ip_list(ip1,ip2) log_fileopen(mpwdok.log,w) log_file1open(mpwderr.log,w) for ip in ip_list: try: s paramiko.Transport((ip, 22)) s.c…

如何在Android Wear上节省电池寿命

If you’re rocking Android on your wrist, there’s a chance you’ve learned to rely on its convenience pretty heavily. And if you’re in that position, then you probably also know how annoying it can be if your watch runs out of juice in the middle of the …

css3 伪类选择器

1.target&#xff1a;表示当前的url片段的元素类型&#xff0c;这个元素必须是E &#xff08;作用类似于选项卡&#xff09; 2.&#xff1a;&#xff1a;before{content&#xff1a;“要添加的内容”} 添加到......之前 3.rgb&#xff08;&#xff09; 颜色 4.rgba&#xf…