1、前言
装饰模式是用来替代继承的一种设计模式,它通过一种无须定义子类的方式来给对象动态增加职责,使用对象之间的关联关系取代类之间的继承关系,降低了系统的耦合,可以动态的增加或者删除对象的职责。
2、装饰模式的概念
装饰模式:动态地给一个对象增加一些额外的职责。
就扩张功能而言,装饰模式提供了一种比使用子类更加灵活的替代方案。
装饰模式:就是给一个类增加行为。比如人类,是父类。男人类和女人类是子类。如果使用继承就多了两个类,但是用装饰模式,我就直接将人类,装饰成男人类或女人类,不用进行继承。大大降低了,类于类之间的耦合。
3、意图
动态地给一个对象增加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更加灵活。该模式以对客户端透明的方式扩展对象的功能。
4、适用环境
(1)在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。
(2)处理那些可以撤销的职责。
(3)当不能采用生成子类的方法进行扩充时。一种情况是,可能有大量独立的扩展,为支持每一种组合将产生大量的子类,使得子类数目呈爆炸性增长。另一种情况可能是因为类定义被隐藏,或类定义不能用于生成子类。
5、参与者
(1)Compoent(被装饰对象的基类)
定义一个对象接口,可以给这些对象动态添加职责。
(2)ConcreteComponent(具体被装饰的对象)
定义一对象,可以给这个对象添加一些职责
(3)Decorator(装饰者抽象类)
维持一个指向Component实例的引用,并定义一与Component接口一致的接口。
(4)ConcreteDecorator(具体装饰者)
具体的装饰对象,给内部持有的具体被装饰对象,增加具体的职责。

最低0.47元/天 解锁文章
1578






