python中实现模版模式的示例

下面是一个使用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,该方法定义了一个算法的骨架,然后调用了两个抽象方法operation1operation2。具体类ConcreteClass1ConcreteClass2继承并实现了这两个抽象方法。

main函数中,我们创建了具体类的实例并调用其template_method方法,即可触发整个算法的执行。输出结果如下:

具体类1的操作1
具体类1的操作2

具体类2的操作1
具体类2的操作2

通过模板模式,我们可以将共同的算法逻辑封装在抽象类的模板方法中,具体的实现由子类完成。这样可以提高代码的复用性和可维护性。