大话设计模式阅读笔记-策略模式
1.面向对象的编程,并不是类越多越好,类的划分是为了封装,但分类的基础是抽象,具有相同属性和功能的对象的抽象集合才是类。打一折和打九折只是形式的不同,所以打折算法应该是一个类。
2.策略模式(Strategy):它定义了算法家族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化,不会影响到使用算法的客户。
3.策略模式解析:
策略模式是一种定义了一系列算法的方法,从概念上来看,所有这些算法完成的都是相同的工作,只是实现不同,它可以以相同的方式调用所有的算法,减少了各算法类和使用算法类之间的耦合。
策略模式的优点是简化了单元测试,因为每个算法都有自己的类,可以通过自己的接口单独测试。
策略模式就是用来封装算法的,但在实践中,我们发现可以用它来封装几乎任何类型的规则,只要在分析过程中听到需要在不同的时间应用不同的业务规则,就可以考虑使用策略模式来处理这种变化的可能性。
策略模式与简单工厂模式的区别是简单工厂模式通过工厂类返回一个具体业务对象给客户端使用,策略模式是context中维护一个业务对象,在context中返回业务对象的操作结果给客户端。