美文网首页
设计模式 - 13.模板方法模式 [行为型模式]

设计模式 - 13.模板方法模式 [行为型模式]

作者: Zszen | 来源:发表于2020-03-26 21:41 被阅读0次
大纲 小结
基础准则 基础准则
创建型模式 单例模式
- 原型模式
- 简单工厂模式
- 抽象工厂模式
- 建造者模式
结构型模式 代理模式
- 适配器模式
- 桥接模式
- 装饰器模式
- 门面/外观模式
- 享元模式
- 组合模式
行为型模式 模板方法模式
- 策略模式
- 命令模式
- 职责链模式
- 状态模式
- 观察者模式
- 中介者模式
- 迭代器模式
- 访问者模式
- 备忘录模式
- 解释器模式

函数的定义在子类, 运行方式在父类中实现

定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。它是一种类行为型模式。

import abc

class IClsA(metaclass=abc.ABCMeta):
    @abc.abstractmethod
    def ntf(self, param):
        pass

class ClsA(IClsA,metaclass=abc.ABCMeta):
    def ntf(self, param):
        print('do param post')
    
    @abc.abstractmethod
    def pre_ntf(self):
        pass

    @abc.abstractmethod
    def post_ntf(self):
        pass

class ClsA_extends(ClsA,metaclass=abc.ABCMeta):
    def ntf(self, param):
        self.debug()
        self.pre_ntf()
        super().ntf(param)
        self.post_ntf()

    def pre_ntf(self):
        print('pre deal')

    def post_ntf(self):
        print('after deal')

    @abc.abstractmethod
    def debug(self):
        pass


class ClsA_debug(ClsA_extends):
    
    def debug(self):
        print('debug before test')


if __name__ == '__main__':
    a = ClsA_debug()
    a.ntf(1)

结果

debug before test
pre deal
do param post
after deal

相关文章

网友评论

      本文标题:设计模式 - 13.模板方法模式 [行为型模式]

      本文链接:https://www.haomeiwen.com/subject/sfgxuhtx.html