定義一個算法或者流程,部分環(huán)節(jié)設計為外部可變弦追,用類似于模板的思想來實例化一個實體岳链,可以往模板中填充不同的內容;在模板思想下劲件,實體的整體框架是確定的掸哑,他是一個模板,但是模板下內容可變零远,從而實現(xiàn)了動態(tài)的更新流程或算法苗分。
示例code:
# encoding=utf-8
"""實現(xiàn)一個客戶點單后的處理流程流程"""
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 = "打印小票" \
"客戶:{}" \
"商品:{}" \
"數(shù)量:{}" \
"時間:{}".format(self.user.name, self.user.shop, self.user.number, self.user.times)
print(string)
def Make(self):
"""開始制作"""
print("制作完成:{} 數(shù)量:{}".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()
------------------
打印小票客戶:小明商品:漢堡數(shù)量:5時間:17:50
制作完成:漢堡 數(shù)量:5
看了模板方法后,感覺和之前的一個設計模式比較相似《python設計模式(二):建造者模式》牵辣,但是建造者模式是將對象的構建和表示分離摔癣,相同的構建生成不同的表示對象,而模板方法是將定義的算法或流程中的部分環(huán)節(jié)推遲到子類中實現(xiàn)算法或流程的可變纬向,這是二者本質的區(qū)別择浊。