Java设计模式(四):装饰模式

装饰模式(decoretor pattern)

装饰模式(decoretor pattern):属于对象的结构型模式。动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。


装饰模式UML图

Java设计模式(四):装饰模式


装饰模式涉及到的对象

抽象构件对象(Component):定义一个抽象接口,以规范准备接收附加职责的对象。具体构件对象(ConcreteComponent):是Component的一个具体对象,也可以给这个对象添加一些附加职责。装饰对象(Decorator):该对象存放了一个构件对象的实例,继承或实现了Component接口。具体装饰对象(ConcreteDecorator):具体的装饰对象,负责给Component添加职责。


装饰模式的意义

装饰模式是为已有功能动态地添加更多功能的一种方式。装饰模式提供了一个非常好的解决方案,它把每个要装饰的功能放在单独的类中,并让这个类包装它所要装饰的对象,因此,当需要执行特殊的行为时,客户代码就可以在运行时根据需要有选择地、按顺序地使用装饰功能包装对象。这样做的好处是有效地把类的核心职责和装饰功能区分开了。而且可以去除相关类中重复的装饰逻辑。


示例代码

抽象构件类 Component

Java设计模式(四):装饰模式

Java

具体构建类 ConcreteComponent

Java设计模式(四):装饰模式

Java

装饰类 Decorator

Java设计模式(四):装饰模式

Java

具体装饰类A ConcreteDecotorA

Java设计模式(四):装饰模式

Java

具体装饰类B ConcreteDecotorB

Java设计模式(四):装饰模式

Java

客户端测试类 TestDecotorPattern

Java设计模式(四):装饰模式

Java


简单的装饰模式

如果只有一个 ConcreteComponent 类,可以考虑去掉抽象的 Component 类(接口),把 Decorator 作为一个 ConcreteComponent 子类。如果只有一个 ConcreteDecorator 类,那么就没有必要建立一个单独的 Decorator 类,而可以把 Decorator 和 ConcreteDecorator 的责任合并成一个类。甚至在只有两个 ConcreteDecorator 类的情况下,都可以这样做。

以上所述是小编给大家介绍的装饰模式,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的!

Java学习资料(复制下段链接至浏览器即可)

data:textml;charset=UTF-8;base64,5oGt5Zac5L2g77yM5p625p6E5biI5a2m5Lmg576k5Y+35pivNjg2NTc5MDE0Cg==

Java设计模式(四):装饰模式

Java

Java学习资料获取(复制下段连接至浏览器即可)
data:text/html;charset=UTF-8;base64,5p625p6E5biI5a2m5Lmg6LWE5paZ5YWN6LS56aKG5Y+W6K+35Yqg5omj5omj5Y+35pivMTAxODkyNTc4MA==

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章