装饰者模式
装饰者模式 装饰者模式是23种设计模式之一,是指在不改变原来的类和使用继承的方式,动态的扩展这个类的功能。装饰者允许向一个现有的对象添加特定的功能却不改变它的结构。通过一个类来包装原有的类来提供额外的功能。 特点 (1) 装饰对象和真实对象有相同的接口。这样客户端对象就能以和真实对象相同的方式和装饰对象交互。 (2) 装饰对象包含一个真实对象的引用(reference) (3) 装饰对象接受所有来自客户端的请求。它把这些请求转发给真实的对象。 (4) 装饰对象可以在转发这些请求以前或以后增加一些附加功能。这样就确保了在运行时,不用修改给定对象的结构就可以在外部增加附加的功能。在面向对象的设计中,通常是通过继承来实现对给定类的功能扩展。 装饰者模式的结构: Component:抽象组件,被装饰的原始对象,可以是抽象类或者接口 ConcreatCompoent:实现或者继承了抽象组件,被装饰的具体的实现 Decorator:抽象的装饰者,实现或者继承了Component抽象组件,持有抽象组件的引用 ConcreatDecotarorA、ConcreatDecotarorB:具体的装饰者,实现或者继承了抽象装饰者。 实现 举个简单的例子,假设有一个科沃斯机器人,它的基本功能是扫地,现在要求这个机器人可以边扫地边唱歌,还可以边扫地边跳舞。 那么,就可以将机器定义为一个抽象的类