一、原理
装饰对象和原本对象分离,通过组合方法即装饰对象中创建原本对象的引用;
如:
墙壁,和能挂衣服的墙壁;墙壁是原本对象,装饰对象定义挂钩对象,同时有墙壁的引用;这样装饰类就表示能挂衣服的墙壁;
车,和飞行车、人工智能车;车是原本对象,装饰对象定能飞的属性或方法,同时有车的引用;这样装饰类就表示能飞的车;
二、职责
三、实现细节
四、Java开发中的场景
其中IO实现细节:
五、优缺点
优点
缺点:
六、装饰模式和桥接模式的区别
桥接模式:解决多重继承问题,变化维度多,本身不稳定
装饰模式:为了增加新的功能
七、代码实现
1、抽象组件
2、ConcreteComponent 具体构建角色(真实对象)
3、装饰器
具体装饰器1:
具体装饰器2:
具体装饰器3:
4、测试
如下实现了复合功能:
结果: