1. 定义
优点:对象的扩展和对象本身区别开来,更加灵活
缺点
代理模式和装饰者模式的区别:
代理模式: 类A无法被直接访问,找到一个代理对象来控制其他程序对A的访问。(客户端并不知道他需要的功能是哪个类实现的,类似于nginx反向代理)
装饰者模式: 对类A的方法进行增强。
2. 继承实现对类的增强
假设有一个煎饼,8块钱
加个鸡蛋,加一块
加根肠,2块
此时有一个问题:如果加1到100根肠的可能性都有,难道继承100次?
3. 装饰模式实现对方法的增强
一个抽象的煎饼
一个具体的煎饼
抽象的装饰者的构造方法要求传入一个煎饼
一个加鸡蛋的装饰者
一个加火腿的装饰者
测试
类图