Design Pattern_Decorator(装饰器模式)

意图:为一个对象动态连接附加的职责。
问题:你需要使用的对象执行你要求的基本功能。但是,你可能需要为这个对象添加某些功能。这些附加功能可能发生在对象的基础功能之前或之后。请注意,Java基础类在I/O处理中广泛使用了Decorator模式。
解决方案:允许扩展一个对象的功能,而不必借助于子类型化。
参与者与协作者:Decorator对象为ConcreteComponent添加功能。有时候ConcreteComponent的派生类被用于提供核心功能,在这种情况下ConcreteComponent类就不再是具体的,而是抽象的。Component类定义了所有这些类使用的接口。
效果:被添加的功能属于小的对象。好处是可以在ConcreteComponent对象的功能之前或之后动态添加功能。注意:虽然一个装饰者可以在被装饰者之前或之后添加功能,但对象链总是以ConcreteComponent对象结束。
实现:创建一个抽象类来表示原始的类和要添加到这个类上的新功能。在装饰者类中,将“对新功能的调用”放在“对紧随其后对象的调用”之前或之后,以获得正确的顺序。



参考这篇文章就行了,http://www.jdon.com/designpatterns/decorator.htm

decorator就是一种包装,有一个核心的inner component,然后还有一个包装用的outer component,

调用outer component时,除了调用inner component 的方法外,还有一些在outer component 的修饰方法也被调用了

这样可以减少大量的类,比如我要把 {红色,蓝色,绿色} {木头,金属} {圆,方}这三种属性进行组合就需要12个不同的类

如果用decorator就是7种,如果组合更多,效果就更加明显了






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值