设计模式行为型策略模式

编程

一、策略模式基本介绍

  • 策略模式(Strategy Pattern)中,定义算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户;
  • 这算法体现了几个设计原则。第一、把变化的代码从不变的代码中分离出来;第二、针对接口编程,而不是具体类(定义策略接口);第三、多用组合/聚合,少用继承(客户通过组合方式使用策略)。

二、策略模式各组成部分

三、策略模式和状态模式的区别

状态模式

策略模式

  • 状态模式的类图和策略模式类似,并且都是能够动态改变对象的行为。

  • 但是状态模式是通过状态转移来改变 Context 所组合的 State 对象,而策略模式是通过 Context 本身的决策来改变组合的 Strategy 对象。

  • 状态模式:状态模式需要在执行某一动作中,将自身的状态属性更改为另一状态;

  • 策略模式:策略模式是对一系列策略的组合,通过不同的策略组合聚合成为不同的Context对象;

四、策略模式的注意事项和细节

  • 策略模式的关键是:分析项目中的变化部分和不变部分;
  • 策略模式的核心思想是:多用组合聚合,少用继承;用行为类,而不是行为的继承,更有弹性;
  • 体现了“对修改关闭,对扩展开放”的原则,客户端增加行为不用修改原有代码,只要添加一种策略(或者行为)即可,避免使用多重转移语句(if...else)。
  • 提供了可以替换继承关系的办法:策略模式将算法封装到独立的Strategy类中使得你可以独立于其Context改变它,使他易于切换、易于理解,易于扩展。
  • 需要注意的是:每添加一个策略都需要添加一个类,当策略过多时,则会导致类数目庞大。

以上是 设计模式行为型策略模式 的全部内容, 来源链接: utcz.com/z/512366.html

回到顶部