定義一個算法或者流程,部分環節設計為外部可變,用類似于模板的思想來實例化一個實體,可以往模板中填充不同的內容;在模板思想下,實體的整體框架是確定的,他是一個模板,但是模板下內容可變,從而實現了動態的更新流程或算法。
示例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設計模式(二):建造者模式》,但是建造者模式是將對象的構建和表示分離,相同的構建生成不同的表示對象,而模板方法是將定義的算法或流程中的部分環節推遲到子類中實現算法或流程的可變,這是二者本質的區別。