设计模式-行为型模式之模板方法
定义抽象基类,规范接口内部方法执行顺序
在进阶篇中,没专门提过抽象基类,在这里顺便就提一下
抽象基类的核心特征:不能被直接实例化(除非所有的抽象方法都被实现)
相反,抽象基类和元类一样,一般都被当做顶层基类使用,派生类必须实现抽象类中指定的方法,且方法名也必须保持一致
抽象基类的主要用途:从一种高层次上规范编程接口
话不多说,直接上代码
1 import abc 2 3 4 class Template(metaclass=abc.ABCMeta): 5 @abc.abstractmethod 6 def pre(self): 7 ... 8 9 @abc.abstractmethod 10 def execute(self): 11 ... 12 13 def func(self): 14 """定义内部接口执行顺序""" 15 self.pre() 16 self.execute() 17 18 19 class Valley(Template): 20 def pre(self): 21 print("预执行") 22 23 def execute(self): 24 print("正式执行") 25 26 27 if __name__ == '__main__': 28 Valley().func()
output:
预执行
正式执行