Skip to content

Latest commit

 

History

History
44 lines (35 loc) · 1.68 KB

状态模式.md

File metadata and controls

44 lines (35 loc) · 1.68 KB

JavaScript设计模式之状态模式

概念

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

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

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

代码演示

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

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

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