《大话设计模式》读书笔记二——策略模式
2009-05-21 16:33
330 查看
第一次看《大话设计模式》中的策略模式时,我纳闷策略模式和简单工厂好像没有什么区别呀,但为什么又总结出了策略模式这个模式呢?
带着这个疑问,我又回头去看了关于策略模式的讲解,“书读百遍其义自见”,果不其然,终于看出里面的区别。首先简单工厂主要用的是面向对象中多态的特性,即任何一个子类的实例都可以赋给父类类型变量,这些可以封装在工厂类里面。在客户端应用时,就需要同时使用到父类和工厂类。而策略模式区别简单工厂的一点是它多出了一个Context类,这个类封装了算法的变化,在客户端也只需要使用Context这个类就可以实现针对不用情况使用不同的算法(策略)。从某种程度上说,这种模式把耦合度降低了,即客户端只需要认识Context类,可以完全不管具体的实现算法类。
再来看看定义:
策略模式是一种定义了一系列算法的方法,从概念上来看,所有这些算法完成的都是相同的工作,只是实现不同,它可以以相同的方式调用所有的算法,减少了各种算法类与使用算法类之间的耦合。
策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。
关于策略模式,《大话设计模式》讲的很容易理解,在园里另外一个朋友写的文章也很好。
/article/4685052.html(鸭子——策略模式(Strategy))
带着这个疑问,我又回头去看了关于策略模式的讲解,“书读百遍其义自见”,果不其然,终于看出里面的区别。首先简单工厂主要用的是面向对象中多态的特性,即任何一个子类的实例都可以赋给父类类型变量,这些可以封装在工厂类里面。在客户端应用时,就需要同时使用到父类和工厂类。而策略模式区别简单工厂的一点是它多出了一个Context类,这个类封装了算法的变化,在客户端也只需要使用Context这个类就可以实现针对不用情况使用不同的算法(策略)。从某种程度上说,这种模式把耦合度降低了,即客户端只需要认识Context类,可以完全不管具体的实现算法类。
再来看看定义:
策略模式是一种定义了一系列算法的方法,从概念上来看,所有这些算法完成的都是相同的工作,只是实现不同,它可以以相同的方式调用所有的算法,减少了各种算法类与使用算法类之间的耦合。
策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。
关于策略模式,《大话设计模式》讲的很容易理解,在园里另外一个朋友写的文章也很好。
/article/4685052.html(鸭子——策略模式(Strategy))
相关文章推荐
- 《大话设计模式》读书笔记:策略模式+反射的Java实现
- 《大话设计模式》读书笔记(C++代码实现) 第二章:策略模式
- 《大话设计模式》读书笔记-第2章 策略模式
- 《大话设计模式》读书笔记:策略模式+反射的Java实现
- 《大话设计模式》读书笔记(C++代码实现) 第二章:策略模式
- 《大话设计模式》读书笔记2 策略模式
- 《大话设计模式》读书笔记-第二章 策略模式
- 大话设计模式--策略模式 strategy -- C++实现实例
- 大话设计模式之策略模式(结合简单工厂),程序完善过程蕴含智慧
- 《大话设计模式》读书笔记:装饰模式与均值计算实例
- 大话设计模式学习之工厂模式和策略模式
- 《大话设计模式》读书笔记三——装饰者模式
- 大话设计模式--java实现策略模式
- 《设计模式之禅》读书笔记--(13)策略模式
- 大话设计模式—策略模式
- 《大话设计模式》读书笔记(C++代码实现) 第六章:装饰模式
- 读书笔记--策略模式