装饰模式(decoretor pattern)
装饰模式(decoretor pattern):属于对象的结构型模式。动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。
装饰模式UML图
装饰模式涉及到的对象
抽象构件对象(Component):定义一个抽象接口,以规范准备接收附加职责的对象。具体构件对象(ConcreteComponent):是Component的一个具体对象,也可以给这个对象添加一些附加职责。装饰对象(Decorator):该对象存放了一个构件对象的实例,继承或实现了Component接口。具体装饰对象(ConcreteDecorator):具体的装饰对象,负责给Component添加职责。
装饰模式的意义
装饰模式是为已有功能动态地添加更多功能的一种方式。装饰模式提供了一个非常好的解决方案,它把每个要装饰的功能放在单独的类中,并让这个类包装它所要装饰的对象,因此,当需要执行特殊的行为时,客户代码就可以在运行时根据需要有选择地、按顺序地使用装饰功能包装对象。这样做的好处是有效地把类的核心职责和装饰功能区分开了。而且可以去除相关类中重复的装饰逻辑。
示例代码
抽象构件类 Component
具体构建类 ConcreteComponent
装饰类 Decorator
具体装饰类A ConcreteDecotorA
具体装饰类B ConcreteDecotorB
客户端测试类 TestDecotorPattern
简单的装饰模式
如果只有一个 ConcreteComponent 类,可以考虑去掉抽象的 Component 类(接口),把 Decorator 作为一个 ConcreteComponent 子类。如果只有一个 ConcreteDecorator 类,那么就没有必要建立一个单独的 Decorator 类,而可以把 Decorator 和 ConcreteDecorator 的责任合并成一个类。甚至在只有两个 ConcreteDecorator 类的情况下,都可以这样做。
以上所述是小编给大家介绍的装饰模式,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的!
Java学习资料(复制下段链接至浏览器即可)
data:textml;charset=UTF-8;base64,5oGt5Zac5L2g77yM5p625p6E5biI5a2m5Lmg576k5Y+35pivNjg2NTc5MDE0Cg==