《设计模式Design Pattern》读书笔记之十九

这是《设计模式Design Pattern》的读书笔记,聚焦于Strategy模式。当对象行为有多种算法时,可将算法置于单独对象中,通过更换算法对象实现灵活切换。还讨论了该模式的层次继承、使用决策、参数传递、对象共享及缺省算法等方面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

《设计模式Design Pattern》读书笔记之十九

Strategy模式

结构

 

目的

当一个对象的某个/某些行为有多种算法的时候,不是通过内部的switch/if等方法,也不是通过派生子类的方法,而是把算法放到一个个单独的对象(有共同的接口)里面。这样,算法的切换只要更换相应的算法对象就可以,达到很大的灵活性。

 

讨论

1,  Strategy可以有层次继承结构,达到把共同的算法统一提取出来的目的。

2,  使用哪个strategy是由client决定/选择的,context不需要知道具体应该使用哪个strategy

3,  由于各个strategy使用共同的接口,因此context传递给strategy的参数可能是冗余的。另外一种办法是传递context本身的指针/引用给strategy,由strategy来决定使用context的哪些信息,但缺点是增加了strategycontext的依赖性,context也需要提供相应的接口来提供各种信息。

4,  如果可以的话,可以设计strategyFlyweight,这样strategy可以被共享,达到减少对象个数的目的。

5,  context也可以自己本身有一个缺省的算法,只有在client确实设定了一个strategy给它的时候才使用strategy对象。

 

 

 

参考资料

Design Pattern  Gang-Of-4  1997

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值