下面是一个使用Python实现模板模式的简单示例:
from abc import ABCMeta, abstractmethod
# 创建抽象基类
class AbstractClass(metaclass=ABCMeta):
def template_method(self):
self.operation1()
self.operation2()
@abstractmethod
def operation1(self):
pass
@abstractmethod
def operation2(self):
pass
# 创建具体类1
class ConcreteClass1(AbstractClass):
def operation1(self):
print("具体类1的操作1")
def operation2(self):
print("具体类1的操作2")
# 创建具体类2
class ConcreteClass2(AbstractClass):
def operation1(self):
print("具体类2的操作1")
def operation2(self):
print("具体类2的操作2")
# 使用模板方法
def main():
concrete_class1 = ConcreteClass1()
concrete_class1.template_method()
print()
concrete_class2 = ConcreteClass2()
concrete_class2.template_method()
if __name__ == "__main__":
main()
以上示例中,抽象类AbstractClass
定义了一个模板方法template_method
,该方法定义了一个算法的骨架,然后调用了两个抽象方法operation1
和operation2
。具体类ConcreteClass1
和ConcreteClass2
继承并实现了这两个抽象方法。
在main
函数中,我们创建了具体类的实例并调用其template_method
方法,即可触发整个算法的执行。输出结果如下:
具体类1的操作1
具体类1的操作2
具体类2的操作1
具体类2的操作2
通过模板模式,我们可以将共同的算法逻辑封装在抽象类的模板方法中,具体的实现由子类完成。这样可以提高代码的复用性和可维护性。