设计模式之行为型状态模式

当一个对象内部状态发生改变时,会导致其行为的改变,这看起来像是改变了对像。
平时写代码的时候经常会遇到要写很多条件判断语句的情况,那么怎么减少代码中的条件判断语句呢?对于这类分支条件内部独立结果的管理,可以使用状态模式,每一种条件作为对象的一种状态,面对不同的判断结果,其实就是选择对象内的一种状态。

// 投票结果状态对象
var ResultState = function() {
  // 判断结果保存在内部状态中
  var States = {
    // 每种状态作为一种独立方法保存
    state0: function() {
      console.log('这是第一种情况'):
    },
    state1: function() {
      console.log('这是第二种情况'):
    },
    state2: function() {
      console.log('这是第三种情况'):
    },
    state3: function() {
      console.log('这是第四种情况'):
    }
  }
  // 获取某种状态并执行对应方法
  function show(result) {
    States['state' + result] && States['state' + result]();
  }
  return {
    // 返回调用状态方法接口
    show: show
  }
}();


//调用 ResultState.show(3);

状态模式主要目的是将条件判断的不同结果转化为状态对象的内部状态,这个内部状态一般作为状态对象的私有变量,然后提供一个能够调用状态对象内部状态的接口方法对象即可。

原文地址:https://www.cnblogs.com/camille666/p/design_pattern_behavior_state.html