面向对象中的适配器模式详解
意图
动态的给一个对象添加额外的职责,简单说,动态的扩展职责就增加功能来说,装饰器模式比生成子类要更加灵活所以装饰器模式主要解决继承子类爆炸增长的问题
装饰器模式中的角色...装饰模式是继承关系的一个替代方案
我们看装饰类Decorator,不管装饰多少层,他始终是一个Component,实现的还是is-a的关系,所以他是继承的一种良好替代方案
如果设计得当,装饰器类的嵌套顺序可以任意...装饰器模式虽然减少了类的爆炸,但是在使用的时候,你就可能需要更多的对象来表示继承关系中的一个对象
多层的装饰是比较复杂,比如查找问题时,被层层嵌套,不容易发现问题所在
装饰器模式使用场景
当你想要给一个类增加功能...,然而,却并不想修改原来类的代码时,可以考虑装饰器模式如果你想要动态的给一个类增加功能,并且这个功能你还希望可以动态的撤销,就好像直接拿掉了一层装饰物
装饰器模式的简化变形
装饰器模式是对继承的一种强有力的补充与替代方案...,装饰器模式具有良好的扩展性
再次强调,设计模式是一种思维模式,没有固定公式
如果需要的话,可以进行简化
如果省略抽象构建,装饰器直接装饰一个类的话,那么可以装饰器直接继承这个类
如果只有一个具体的装饰器类