状态模式:当一个对象内部状态发生变化的时候,会导致起行为变化,看起来就像改变了对象
状态模式定义了一个对象,这个对象可以通过管理其内部状态从而是其行为发生变化。状态模式是一个非常出色的设计模式,主要由两个角色构成
- 环境类:拥有一个状态成员,可以修改其状态并做出反应
- 状态类:表示一种状态,包含相应的处理方法
对于一个简单的例子,我们可以将不同的判断结构封装在一个状态对象内,然后该状态对象返回一个可被调用的状态方法,用于调用对象内部某个方法。
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);
上面代码只是一个雏形,对于状态模式主要目的就是将条件判断的不同结构,转化为状态对象的内部状态,既然是状态对象的内部状态,所以一般是作为状态对象的私有变量,然后提供一个能够调用状态对象内部状态的接口方法对象