设计模式之Decorator与Strategy

本文深入探讨了Decorator与Strategy模式的核心概念,通过实例分析了它们如何实现多态,以及在具体应用中如何通过Decorator模式动态地给对象添加功能,与Strategy模式侧重于对特定功能的不同实现方式进行了对比。

最近在学习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.


理解错误的地方,还请大家指正


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值