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