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','')
  • 相关阅读:
    单片机GPIO口模拟串口的方法
    arduino~snprintf
    #7号板问题
    stm8s + si4463 寄存器配置
    linux之cut用法
    74HC123D 引脚介绍及应用
    无线板卡接口定义
    iio adc转换应用编写
    m72 gprs模块的应用编写
    dac7562 应用层实现dac
  • 原文地址:https://www.cnblogs.com/morgana/p/8496318.html
Copyright © 2011-2022 走看看