装饰模式Decorator Pattern¶
就是为一个类增加功能 把要增加功能的类做参数传入 要增加功能的类需要有一个虚构函数, 然后新类去实现,先原类执行一下该方法,然后再在函数中添加逻辑。
概念¶
装饰( Decorator )模式又叫做包装模式。通过一种对客户端透明的方式来扩展对象的功能,是继承关系的一个替换方案。 装饰模式就是把要添加的附加功能分别放在单独的类中,并让这个类包含它要装饰的对象,当需要执行时,客户端就可以有选择地、按顺序地使用装饰功能包装对象。
适用于¶
装饰者模式(Decorator Pattern)动态的给一个对象添加一些额外的职责(增加的功能组合更加灵活)。就增加功能来说,此模式比生成子类更为灵活。
不是继承, 而是包含。
例¶
车 会跑,然后为车扩展一个方法:会飞。还可以为添加会飞的车再添加会游泳的功能。 多次添加功能。功能可以自由的组合。
继承,组合。
底层库用的比较多,例如输入输出流。
例
- 车类 car
- 做一个抽象接口 run
- 扩展功能 会飞的车 继承车
- 构造函数 参数传一个car对象 对car进行增加功能。会飞的车也有车的全部功能。