基本介绍
在模板模式(Template Pattern)中,一个抽象类公开定义了执行它方法的模板。
它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。
特点:在有一些通用方法都需要使用时,可将其定义为模板
该模式属于行为型模式。
案例图示
如图所示,为同一个模板传入不同的参数会得到不同的结果:
优缺点
优点:
- 封装不变部分,扩展可变部分
- 提取公共代码,便于维护
- 行为由父类控制,子类实现
缺点:
- 每一个不同的实现都需要一个子类来实现,导致类的个数增加,使得系统更加庞大
代码实现
用Python实现模板模式,实现一个客户点单后的处理流程流程:
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 = "打印小票\n" \
"客户:{} " \
"商品:{} " \
"数量:{} " \
"时间:{} ".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