设计模式之Decorator与Strategy
来源:互联网 发布:数据库教程 pdf 编辑:程序博客网 时间:2024/06/08 07:26
最近在学习design pattern.在看完Decorator与Strategy之后,产生了一个疑问,两者之间的区别和联系是什么?
Decorator与Strategy都实现了多态。而其最重要的一点是Decorator的多态是基于具体对象。
比如我们定义一个“人“这样的类,人刚生下来时,除了吃喝拉撒什么都不会,后来才会走,会说话,会听,会写。
Men * A =new DecoratorTalk( new DecoratorWalk(new Men()));
这样A是一个会走会说的人。如果定义一个哑巴,则是
Men * B = new DecoratorWalk(new Men());
这就是Decorator模式,把Object的功能通过Decorator加上去.
而strategy更着重于对某一个功能的实现不同。同样是”运动“,不同动物表现出来的不同。鸟飞鱼游。这也是为什么
strategy可以由Template来替换的原因(这里先不考虑两者的优缺点)。
Decorator也可以 通过静态继承,或者strategy模式来实现。但是不同的组合会产生不同的子类。就如"人"的例子,瘫痪会说会写会听不会走,哑巴会写会听会走不会说,文盲会走会说会听不会写,幼儿只会听说,不会走等等等等。如果每种组合都成一个子类,则会很复杂。这里只定义一个"人”,根据具体对象,把不同功能加上去,就是Decorator.
理解错误的地方,还请大家指正
0 0
- 设计模式之Decorator与Strategy
- 设计模式之 strategy
- 设计模式之Strategy
- 设计模式之Decorator
- 设计模式之 Decorator
- 设计模式之Decorator
- 设计模式之Decorator
- 设计模式之Decorator
- 设计模式之 decorator
- 设计模式之Decorator
- 设计模式之Decorator
- 设计模式之Decorator
- 设计模式之Strategy模式
- 设计模式之strategy模式
- 设计模式之---Strategy 模式
- 设计模式之Strategy模式
- 设计模式之---Decorator 模式
- JAVA与设计模式--之STRATEGY策略模式
- ireport自定义动态创建报表
- ORA-00845: MEMORY_TARGET not supported on this system
- linux下MySQL安装及设置
- Cocoa Mac应用程序创建DMG打包发布
- Session机制详解
- 设计模式之Decorator与Strategy
- 操作系统之基本认知
- Java使用POI将数据导出到Excel的工具方法
- Android各种屏幕分辨率
- SecureCRT中文乱码的解决方法
- [LeetCode]Convert Sorted Array to Binary Search Tree
- SSL 3.0曝出高危漏洞
- [转]数据挖掘十大经典算法
- Oracle11gR2——RAC中的服务