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设计模式(二):建造者模式》,但是建造者模式是将对象的构建和表示分离,相同的构建生成不同的表示对象,而模板方法是将定义的算法或流程中的部分环节推迟到子类中实现算法或流程的可变,这是二者本质的区别。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值