模板方法模式
-
内容
定义一个操作中的算法中的骨架,而将一些步奏延迟到子类中,模板方法可以使得一个子类不改变一个算法的结构即可重定义该算法的某些特定步奏
-
角色
-
抽象类
定义抽象原子操作(钩子操作),实现一个模板方法做算法骨架
-
具体类
实现原子操作
-
-
使用场景
-
一次性实现一个算法不变得部分
-
子类中的工共方法全部提取出来,并集中到一个工共父类中,以避免代码重复
-
控制字类扩展
-
-
代码实例
from abc import ABCMeta,abstractmethod from time import sleep class Win(metaclass=ABCMeta): """docstring for Win""" @abstractmethod def start(self): pass @abstractmethod def stop(self): pass @abstractmethod def paint(self): pass def run(self): self.start() while True: try: self.paint() sleep(1) except KeyboardInterrupt: break self.stop() class MyWin(Win): """docstring for MyWin""" def __init__(self,msg): self.msg = msg def start(self): print("win程序正在运行",self.msg) def paint(self): print('程序正在切换') def stop(self): print("程序已经停止了") MyWin('你猜啊').run()