2.策略模式(《大话设计模式》--程杰,笔记)

策略模式:它定义了算法家族,分别封装起来,让它们直接可以互相替换,此模式让算法的变化,不会影响到使用算法的用户。

  • 策略模式是一种定义一系列算法的方法,从概念上来看,所有这些算法完成的都是相同的工作,只是实现不同,它可以以相同的方式调用所有的算法,减少了各种算法类与使用算法类之间的耦合。
  • 策略模式的策略抽象类定义了一系列可供重用的算法或行为,继承有助于析取出这些算法中的公共功能。
  • 策略模式简化了单元测试,因为每个算法都有自己的类,可以通过自己的接口单独测试。

类图

2.策略模式(《大话设计模式》--程杰,笔记)

策略模式vs简单工厂模式:

简单工厂模式中只管生产实例,具体怎么使用工厂实例由调用方决定,策略模式是将生成实例的使用策略放在策略类中配置后才提供调用方使用。工厂模式调用方可以直接调用工厂实例的方法属性等,策略模式不能直接调用实例的方法属性,需要在策略类中封装策略后调用。