简化if else的分支判断,防止逻辑修改导致大面积修改
var State = function(){
//内部状态私有变量
var _currentState = {},
//动作与状态方法映射
states = {
x1: function(){
console.log(111);
},
x2: function(){
console.log(222);
},
x3: function(){
console.log(333);
}
};
//动作控制类
var Action = {
//改变状态方法
changeState: function(){
var arg = arguments;
_currentState = {}; //重置内部状态
if(arg.length){
for(var i = 0, len = arg.length; i < len; i++){
_currentState[arg[i]] = true;
}
}
//返回动作控制类
return this;
},
//执行动作
goes: function(){
for(var i in _currentState){
//如果该动作存在则执行
states[i] && states[i]();
}
return this;
}
}
return {
change: Action.changeState,
goes: Action.goes
}
}
var k = new State();
k.change('x2', 'x1')
.goes()
.goes()
.change('x3')
.goes();
从六开始到十六的设计模式属于行为型设计模式
林秀栋的技术博客