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

王朝other·作者佚名  2006-01-31
窄屏简体版  字體: |||超大  

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

Strategy模式

结构

目的

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

讨论

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

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

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

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

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

参考资料

《Design Pattern》 Gang-Of-4 1997

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航