策略模式(转载)

以下文章转载自:https://www.cnblogs.com/lewis0077/p/5133812.html

策略模式定义了一系列的算法,并将每一个算法封装起来,使每个算法可以互相替代,使算法本身和使用算法的客户端分割开来,相互独立。

策略模式的作用:就是把具体的算法实现从业务逻辑中剥离出来,成为一系列独立算法类,使得它们可以互相替换。

策略模式的重点:不是如何来实现算法,而是如何组织和调用这些算法,从而让我们的程序结构更加的灵活、可扩展。

策略模式的优点

  1. 策略模式的功能就是通过抽象、封装来定义一系列的算法,使得这些算法可以互相替换,所以为这些算法定义一个公共的接口,以约束这些算法的功能实现。如何这些算法具有公共的功能,可以将接口变为抽象类,将公共功能放到抽象父类里面。
  2. 策略模式的一系列算法师可以互相替换的,是平等的,写在一起就是if-else组织结构,如果算法实现里又有条件语句,就构成了多重条件语句,可以用策略模式,避免这样的多重条件语句。
  3. 扩展性更好:在策略模式中扩展策略实现非常的容易,只要新增一个策略实现类,然后再使用策略实现的地方,使用这个新的策略实现就好了。

 

策略模式的缺点

  1. 客户端必须了解所有的策略,清楚它们的不同:如果有客户端来决定使用何种算法,那客户端必须知道所有的策略,清楚各个策略的功能和不同,这样才能做出正确的选择,但是这暴露了策略的具体实现。
  2. 增加了 对象的数量:

由于策略模式将每个具体的算法都单独封装为一个策略类,如果可选的策略有很多的话,那对象的数量也会很多。

  1. 只适合扁平的算法结构:

由于策略模式的各个策略实现是平等的关系,实际上就构成了一个扁平的算法结构。即一个策略接口下面有多个平等的策略实现,并且运行时只能有一个算法被使用。这就限制了算法的使用层级,且不能被嵌套。

 

 

策略模式的本质:

         分离算法,选择实现

猜你喜欢

转载自blog.csdn.net/xingyuncaojun/article/details/87260673