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