《设计模式Design Pattern》读书笔记之十九
来源:互联网 发布:新闻资讯类数据分析 编辑:程序博客网 时间:2024/04/28 10:30
《设计模式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
- 《设计模式Design Pattern》读书笔记之十九
- 《设计模式Design Pattern》读书笔记之二
- 《设计模式Design Pattern》读书笔记之三
- 《设计模式Design Pattern》读书笔记之四
- 《设计模式Design Pattern》读书笔记之六
- 《设计模式Design Pattern》读书笔记之七
- 《设计模式Design Pattern》读书笔记之八
- 《设计模式Design Pattern》读书笔记之九
- 《设计模式Design Pattern》读书笔记之十
- 《设计模式Design Pattern》读书笔记之十一
- 《设计模式Design Pattern》读书笔记之十二
- 《设计模式Design Pattern》读书笔记之十三
- 《设计模式Design Pattern》读书笔记之十四
- 《设计模式Design Pattern》读书笔记之十五
- 《设计模式Design Pattern》读书笔记之十六
- 《设计模式Design Pattern》读书笔记之十七
- 《设计模式Design Pattern》读书笔记之十八
- 《设计模式Design Pattern》读书笔记之二十
- 利用Delphi开发旅游景点微机售票系统
- 自动安装SQL Server数据库
- 2005年4月3日
- Eclipse快速上手Hibernate--2. 利用Hbm映射文件开发
- 简单工作方法论
- 《设计模式Design Pattern》读书笔记之十九
- Martin Fowler:以OpenSource的方式做R&D
- 《设计模式Design Pattern》读书笔记之二十
- 网站营销推广10不要(zz)
- Asp.net(C#)实现验证码功能
- 《设计模式Design Pattern》读书笔记之二十一
- java.security.acl.Owner翻译
- 使用WSDL发布WebService(第二部分)简单对象访问协议——学习SOAP语法和使用SOAP发布WSDL
- VC操作SQL Server 主从表