我也常说的设计模式是23种设计模式,分为3大类:
上次咱们说了“桥接模式”。今天咱们聊一聊结构型模式中的“装饰者模式”。
结构型模式重点在于结构的变化。

“装饰者模式”关键在于“装饰”,也就是在原有基础上,增加功能方法的结构设计。
接口

接口的实现类

如果以上作为“核心操作”。下面就要写“装饰”的结构了。
先建立一个抽象类实现接口,并实现接口中的实现方法(operation)。抽象类里组建了使用接口的属性,通过构造函数执行赋值对象。(Component com属性)。

抽象类里用到了“operation()”方法“递归”操作,如果你能仔细看,它的操作,只是不断的调用com对象的方法。当“装饰”里没有组件的Component属性的对象了就不会去调用了。为的是多重的“装饰”的解析而准备的。
装饰器的实现类ConcreteDecoratorA
装饰器的实现类ConcreteDecoratorB
在使用的时候 ConcreteDecoratorB的对象装饰ConcreteDecoratorA的对象装饰ConcreteComponent对象。调用operation()方法后,由于递归的作用有多少层次的装饰就有多少层的输出。这样装饰的功能一一展现。
今天设置一个场景,“孙悟空”的七十二变,变什么像什么,变成鸟它会飞,变成鱼它会游,但是无论变成生么都改不了猴子的本质。我们用装饰者模式来体现这一个过程。
“王”的接口,设置了类型的属性,和变化的抽象行为。


实现接口的猴王类。
孙悟空拥有七十二变的能力,这一能力就是“装饰器”体现。
实现可装饰的鱼
实现可装饰的鸟
实现调用,孙悟空的对象为“核心对象”,装饰成鸟,再装饰成鱼,再装饰成鸟,可以飞。
但是实际仍然是猴
