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


2019-03-17-22_09_33.png


相关文章
|
5月前
|
设计模式 算法
二十三种设计模式全面解析-深入解析模板方法模式的奇妙世界
二十三种设计模式全面解析-深入解析模板方法模式的奇妙世界
|
7月前
|
设计模式 存储 算法
行为型设计模式02-模板方法模式
行为型设计模式02-模板方法模式
36 0
|
7月前
|
设计模式 算法
设计模式9 - 模板方法模式【Template Method Pattern】
设计模式9 - 模板方法模式【Template Method Pattern】
22 0
|
7月前
|
设计模式 算法 Java
设计模式~模板方法模式(Template method)-10
目录 (1)优点: (2)缺点: (3)使用场景: (4)注意事项: (5)应用实例: (6)Servlet Api &
33 0
|
14天前
|
设计模式 算法 Java
Java 设计模式:深入模板方法模式的原理与应用
【4月更文挑战第27天】模板方法模式是一种行为设计模式,主要用于定义一个操作中的算法的框架,允许子类在不改变算法结构的情况下重定义算法的某些特定步骤。
22 1
|
17天前
|
设计模式 算法 Java
[设计模式Java实现附plantuml源码~行为型]定义算法的框架——模板方法模式
[设计模式Java实现附plantuml源码~行为型]定义算法的框架——模板方法模式
|
17天前
|
设计模式 算法 程序员
Python从入门到精通:2.1.3深入学习面向对象编程——设计模式的学习与实践
Python从入门到精通:2.1.3深入学习面向对象编程——设计模式的学习与实践
|
29天前
|
设计模式 算法 Java
小谈设计模式(11)—模板方法模式
小谈设计模式(11)—模板方法模式
|
1月前
|
设计模式 算法 Java
23种设计模式,模板方法模式的概念优缺点以及JAVA代码举例
【4月更文挑战第10天】模板方法模式是一种行为设计模式,它定义了一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些特定步骤。
20 0
|
2月前
|
设计模式 存储 算法
【设计模式】模板方法模式
【设计模式】模板方法模式