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.pswp.cn/news/279880.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/279880.shtml
英文地址,請注明出處:http://en.pswp.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…