zoukankan      html  css  js  c++  java
  • 模板方法模式

    一、内容

    定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

    二、角色

    • 抽象类:定义抽象的原子操作(钩子操作);实现一个模板方法的骨架
    • 具体类:实现原子操作

    三、适用场景

    • 一次性实现一个算法的不变的部分
    • 各个子类中的公共行为应该被提取出来并集中到一个公共父类中以避免代码重复
    • 控制子类扩展

    四、示例代码

    from abc import ABCMeta, abstractmethod
    
    
    class IOHandler(metaclass=ABCMeta):
        @abstractmethod
        def open(self, name):
            pass
        @abstractmethod
        def deal(self, change):
            pass
        @abstractmethod
        def close(self):
            pass
    
        def process(self, name, change):
            '''模板,就相当于是一个空盒子,可以往里面添加自己需要的功能。让这个函数去执行'''
            self.open(name)
            self.deal(change)
            self.close()
    
    
    class FileHandler(IOHandler):
        def open(self, name):
            print('打开文件')
    
        def deal(self, change):
            print('操作文件')
    
        def close(self):
            print('关闭文件')
    
    obj = FileHandler()
    obj.process('abc.txt','')
  • 相关阅读:
    STL目录
    Hola!
    SWPUCTF 2019总结以及部分WP
    SQL手工注入基础篇
    JDK11,JDK12没有JRE的解决方法
    FJUT2019暑假周赛三部分题解
    FJUT2019暑假周赛一题解
    随笔1
    关于针对本校教务系统漏洞的一次信息检索
    KMP算法讲解
  • 原文地址:https://www.cnblogs.com/morgana/p/8496318.html
Copyright © 2011-2022 走看看