Decorate设计模式

Posted 石涛涛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Decorate设计模式相关的知识,希望对你有一定的参考价值。

定义:装饰器设计模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。不改变对象的情况下,动态增加其功能。

• 需要扩展一个类的功能,或给一个类添加附加的成员。

• 需要动态地给一个对象增加功能,这些功能可以再次动态的撤销

• 需要增加由一些基本功能的排列组合二产生的非常大量的功能,从而使继承关系实现变得不现实。

clip_image002

装饰器模式中的各个角色:

• 抽象构件角色:给出抽象接口。规范被附加功能类型。

• 具体构件角色:被附加功能的具体实现。

• 装饰角色:持有被附加对象的实例,并实现抽象构件的接口规范(装饰角色实现抽象构件的目的就是为了具体装饰角色之间也可以相互修饰)。

• 具体装饰角色:扩展具体构件的功能

客户端可以显式扩展具体构件的功能,由于装饰器继承了抽象构件的,所以装饰器之间可以相互修饰,任意组合,从而扩展出具有排列组合性质的组合。

代码:

 

代码

 

 

 

输出结果:

clip_image004

以上是关于Decorate设计模式的主要内容,如果未能解决你的问题,请参考以下文章

设计模式--装饰模式Decorate(结构型)

装饰模式(Decorate)-今天你要秀你的哪一面?

GO设计模式10装饰器模式

设计模式 - 装饰者模式

设计模式之装饰模式

java 设计模式 之 装饰器模式