大纲 | 小结 |
---|---|
基础准则 | 基础准则 |
创建型模式 | 单例模式 |
- | 原型模式 |
- | 简单工厂模式 |
- | 抽象工厂模式 |
- | 建造者模式 |
结构型模式 | 代理模式 |
- | 适配器模式 |
- | 桥接模式 |
- | 装饰器模式 |
- | 门面/外观模式 |
- | 享元模式 |
- | 组合模式 |
行为型模式 | 模板方法模式 |
- | 策略模式 |
- | 命令模式 |
- | 职责链模式 |
- | 状态模式 |
- | 观察者模式 |
- | 中介者模式 |
- | 迭代器模式 |
- | 访问者模式 |
- | 备忘录模式 |
- | 解释器模式 |
函数的定义在子类, 运行方式在父类中实现
定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。它是一种类行为型模式。

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
网友评论