Skip to content

Latest commit

 

History

History
43 lines (34 loc) · 1.52 KB

File metadata and controls

43 lines (34 loc) · 1.52 KB

三. 状态模式

当一个对象内部状态发生变化的时候,会导致起行为变化,看起来就像改变了对象

状态模式定义了一个对象,这个对象可以通过管理其内部状态从而是其行为发生变化。状态模式是一个非常出色的设计模式,主要由两个角色构成

  • 环境类:拥有一个状态成员,可以修改其状态并做出反应
  • 状态类:表示一种状态,包含相应的处理方法

演示

一个简单的例子,我们可以将不同的判断结构封装在一个状态对象内,然后该状态对象返回一个可被调用的状态方法,用于调用对象内部某个方法。

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(4);

上面代码只是一个雏形,对于状态模式主要目的就是将条件判断的不同结构,转化为状态对象的内部状态,既然是状态对象的内部状态,所以一般是作为状态对象的私有变量,然后提供一个能够调用状态对象内部状态的接口方法对象