Design 模板模式

基本介绍

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

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

这种类型的设计模式属于行为型模式。

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

举例:在造房子的时候,地基、走线、水管都一样,只有在建筑的后期才有加壁橱加栅栏等差异

案例图示

如图所示:

image-20210414153533651

优缺点

优点:

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

缺点:

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

Python实现

用Python实现模板模式,实现一个客户点单后的处理流程流程:

#! /usr/local/bin/python3
# -*- coding: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

Golang实现

用Golang实现模板模式,实现一个客户点单后的处理流程流程:

...
posted @ 2021-04-14 15:36  云崖君  阅读(57)  评论(0编辑  收藏  举报