当前位置: 技术问答>java相关
看过decorator模式,一直不能彻底的了解?那个能给讲一讲?
来源: 互联网 发布时间:2017-04-07
本文导语: thanks. | hi,see u again:) Decorator的意义在于对象组装。一个Decorator对象可能是几个实现了相同接口的对象的组合,当你访问该对象时,实际上的操作可能是许多对象依次响应,而在客户端是感受...
thanks.
|
hi,see u again:)
Decorator的意义在于对象组装。一个Decorator对象可能是几个实现了相同接口的对象的组合,当你访问该对象时,实际上的操作可能是许多对象依次响应,而在客户端是感受不到的。
重要的是,这样的组装是动态的,这样,一个对象可以通过Decorator来添加不同的功能(而不是类扩展),这也是Decorator(装饰)的由来。
java.io包使用了大量的Decorator pattern,使用时可注意观察
Decorator的意义在于对象组装。一个Decorator对象可能是几个实现了相同接口的对象的组合,当你访问该对象时,实际上的操作可能是许多对象依次响应,而在客户端是感受不到的。
重要的是,这样的组装是动态的,这样,一个对象可以通过Decorator来添加不同的功能(而不是类扩展),这也是Decorator(装饰)的由来。
java.io包使用了大量的Decorator pattern,使用时可注意观察
|
孙悟空有七十二般变化;他的每一种变化都给他带来一种附加的本领。他变成鱼儿时,就可以到水里游泳;他变成雀儿时,就可以在天上飞行。而不管悟空怎么变化,在二郎神眼里,他永远是那只猢狲。
装饰模式以对客户透明的方式动态地给一个对象附加上更多的责任。换言之,客户端并不会觉得对象在装饰前和装饰后有什么不同。装饰模式可以在不使用创造更多子类的情况下,将对象的功能加以扩展。
装饰模式使用原来的被装饰的类的一个子类的实例,把客户端的调用委派到被装饰类。装饰模式的关键在于这种扩展是完全透明的。
在孙猴子的例子里,老孙变成的鱼儿相当于老孙的子类,这条鱼儿与外界的互动要通过“委派”,交给老孙的本尊,由老孙本尊采取行动。尽管老孙把自己“装饰”成了鱼儿,在二郎神的眼里,他仍然是那只猢狲。
装饰模式以对客户透明的方式动态地给一个对象附加上更多的责任。换言之,客户端并不会觉得对象在装饰前和装饰后有什么不同。装饰模式可以在不使用创造更多子类的情况下,将对象的功能加以扩展。
装饰模式使用原来的被装饰的类的一个子类的实例,把客户端的调用委派到被装饰类。装饰模式的关键在于这种扩展是完全透明的。
在孙猴子的例子里,老孙变成的鱼儿相当于老孙的子类,这条鱼儿与外界的互动要通过“委派”,交给老孙的本尊,由老孙本尊采取行动。尽管老孙把自己“装饰”成了鱼儿,在二郎神的眼里,他仍然是那只猢狲。