装饰器模式
适用范围:
我已经有了一个类,但是这个类还不够让我满意,我就拿装饰器给他装饰一下。
代码演示:
- 假如我去喝咖啡,但是咖啡是苦的,我需要加糖装饰一下
- 苦咖啡 与 加糖咖啡 都是基于 咖啡接口
- 即将刚开始的苦咖啡经过加糖咖啡的装饰返回了一杯新的咖啡
- 咖啡接口
1 | public interface Coffee { |
- 苦咖啡实现类
1 | public class BitterCoffee implements Coffee { |
- 默认点餐逻辑
1 | public class Main { |
- 加糖装饰器
1 | /** |
5.加糖成功
1 | public class Main { |
与代理模式的差别:
两者实现的都是对原对象的包装,持有原对象的实例,差别在于对外的表现。
装饰器模式:点了咖啡,发现太苦了,不是自己想要的,然后用装饰器加了点糖。
1
2Coffee coffee = new BitterCoffee();
coffee = new SugarDecorator(coffee);- 代理模式:直接就点的加糖咖啡。
1
Coffee coffee = new CoffeeWithSugar();
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Kid1999' Blog!