标签:wado ceo oat jqm wsgi mac bho tab pig
模式定义:动态地给一个对象增加一些额外的职责(Responsibility),就增加对象功能来说,装饰模式比生成子类实现更为灵活。
模式结构:
应用场景:
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()
标签:wado ceo oat jqm wsgi mac bho tab pig
原文地址:https://www.cnblogs.com/zenan/p/10338085.html