zoukankan      html  css  js  c++  java
  • 装饰模式

    模式定义:动态地给一个对象增加一些额外的职责(Responsibility),就增加对象功能来说,装饰模式比生成子类实现更为灵活。

    模式结构:

    • Component: 抽象构件
    • ConcreteComponent: 具体构件
    • Decorator: 抽象装饰类
    • ConcreteDecorator: 具体装饰类

     

    应用场景:
    1)需要扩展一个类的功能,或给一个类增加附加责任。
    2)需要动态的给一个对象增加功能,这些功能可以再动态地撤销。
    3)需要增加一些基本功能的排列组合而产生的非常大量的功能,从而使继承变得不现实。

    场景介绍:变形金刚本体为car,可以变身为robot,airplane

    from abc import ABCMeta, abstractmethod
    
    
    class AutoBotsInterface(metaclass=ABCMeta):
        @abstractmethod
        def move(self):
            pass
    
    
    class Car(AutoBotsInterface):
        def move(self):
            print("driver")
    
    
    # 分割线
    # 此处我们需要动态增加Car的功能,即装饰car实例
    class Changer(AutoBotsInterface):
        def __init__(self, instanceObj):
            self._instance = instanceObj
    
        def move(self):
            self._instance.move()
            # 新增功能
            pass
    
    
    class Airplane(Changer):
        def move(self):
            print("fly")
    
    
    class Robot(Changer):
        def move(self):
            print("run")
    
        def speak(self):
            print("i can speak")
    
    
    if __name__ == "__main__":
        bumblebee = Car()
        bumblebee.move()
    
        airplane = Airplane(bumblebee)
        robot = Robot(bumblebee)
    
        airplane.move()
        robot.move()
        robot.speak()
    

      

  • 相关阅读:
    缓存更新的套路
    return 和 return false 的区别
    TensorFlow函数:tf.truncated_normal
    TensorFlow随机值:tf.random_normal函数
    TensorFlow函数:tf.lin_space
    TensorFlow函数:tf.ones_like
    TensorFlow函数:tf.ones
    TensorFlow函数:tf.zeros_like
    Tensorflow函数:tf.zeros
    数据分析常用的python工具和SQL语句
  • 原文地址:https://www.cnblogs.com/zenan/p/10338085.html
Copyright © 2011-2022 走看看