23种设计模式Python版 24 模板模式

模板模式是一种行为型设计模式,用于封装不变部分并允许子类扩展可变部分。通过定义一个操作中的算法骨架,子类可以改变该算法的特定步骤。在Python示例中,展示了如何创建一个处理客户点单流程的模板,包括打印小票和制作过程,子类可以按需扩展这些步骤。

基本介绍

在模板模式(Template Pattern)中,一个抽象类公开定义了执行它方法的模板。

它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。

特点:在有一些通用方法都需要使用时,可将其定义为模板

该模式属于行为型模式。

案例图示

如图所示,为同一个模板传入不同的参数会得到不同的结果:

image-20210625171424958

优缺点

优点:

  • 封装不变部分,扩展可变部分
  • 提取公共代码,便于维护
  • 行为由父类控制,子类实现

缺点:

  • 每一个不同的实现都需要一个子类来实现,导致类的个数增加,使得系统更加庞大

代码实现

用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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值