本文通过一个示例说明了Java装饰者模型。 共享仅供参考。 具体情况如下。
装饰模式
动态扩展对象的功能,而不更改原始类文件或使用继承。 通过创建封装对象或装饰来包装实际对象。
装饰对象接受来自客户端的所有请求。 将这些请求转发给实际对象。 装饰对象可以在转发这些请求之前或之后添加一些附加功能。
这样就可以在运行时向外部添加其他功能,而无需修改特定对象的结构。 在面向对象的设计中,通常通过继承来实现对特定类的功能扩展。
好处
1 .装饰模式(Decorator )模式和继承关系的目的都是扩展对象的功能,但装饰模式(Decorator )可以提供比继承更多的灵活性。
2 .通过使用不同的具体装饰类和这些装饰类的排列组合,设计师可以做出许多不同的行为组合。
角色列表
装饰模式的各角色如下所示。
(1)抽象组件(Component )作用:给出抽象接口,规范接受附加责任的对象。
)2)具体组成部分(Concrete Component )角色)定义接受附加责任的类。
)3)装饰(Decorator )角色)具有一个组件)对象的实例,实现与抽象组件接口一致的接口。
)4)具体装饰(Concrete Decorator )作用)对组件对象承担附加责任。
示例代码
以手抓饭为例。 手抓饭有各种各样的味道,但他以自己特有的手抓饭为基础。 在此基础上,可以加入鸡蛋、牛肉、里脊肉等中的一种或几种的组合。
抽象元素角色
“元素”(Concrete Component )角色
装饰角色
广告解码器角色
广告解码器角色
测试类
输出结果:
希望本文的描述对大家的java编程有帮助。
原文链接: 3358 blog.csdn.net/u 014086926/article/details/45127365