Python笔记:模板方法模式

时间:2019-12-11 00:41:36   收藏:0   阅读:75

此模式通过一个模板方法来定义程序的框架或算法,通常模板方法定义在基类中,即原始的模板,然后子类就可以根据不同的需要实现或重写模板方法中的某些算法步骤或者框架的某部分,最后达到使用相同模板实现不同功能的效果。

核心思想:

主要角色:

优缺点:

模板方法运用案例--钩子

    钩子是在基类中声明的方法,并且在模板方法中使用它,通常是给它定义好一个默认的实现,钩子的思想是为子类提供一个按需“钩取”的能力,因此如果子类不想使用钩子,则可以忽略钩子的相关实现。

简单示例:

from abc import ABCMeta, abstractmethod


class Template(metaclass=ABCMeta):
    """接口:模板类"""
    @abstractmethod
    def operation_1(self):
        pass

    @abstractmethod
    def operation_2(self):
        pass

    def template_func(self):
        """模板方法:定义好具体的算法步骤或框架"""
        self.operation_1()
        self.operation_2()


class SubObj1(Template):
    """子类1:按需重新定义模板方法中的算法操作"""
    def operation_1(self):
        print(SubObj1.operation_1())

    def operation_2(self):
        print(SubObj1.operation_2())


class SubObj2(Template):
    """子类2:按需重新定义模板方法中的算法操作"""
    def operation_1(self):
        print(SubObj2.operation_1())

    def operation_2(self):
        print(SubObj2.operation_2())


if __name__ == __main__:
    SubObj1().template_func()
    SubObj2().template_func()

 

原文:https://www.cnblogs.com/guyuyun/p/12019996.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!