可以将所需的功能,按正确的顺序串联起来进行控制
动态的给对象增加功能,与使用子类相比装饰模式更为灵活
代码示例
class Person(object): def __init__(self,name): self.name = name def show(self): print("%s 的装扮" %self.name) class Finery(Person): component = None def decorate(self,component): self.component = component def show(self): if self.component != None: self.component.show() class WearTShirts(Finery): def __init__(self): pass def show(self): print("T恤") self.component.show() class WearBigTrouser(Finery): def __init__(self): pass def show(self): print("垮裤") self.component.show() class WearSuit(Finery): def __init__(self): pass def show(self): print("西装") self.component.show() class WearLeatherShoes(Finery): def __init__(self): pass def show(self): print("皮鞋") self.component.show() f1 = Person("han") # 找衣服 px = WearLeatherShoes() xz = WearSuit() tx = WearTShirts() # 开始穿衣服,装饰过程 tx.decorate(f1) px.decorate(tx) xz.decorate(px) xz.show()