Javascript设计模式(一)States
1.当一个对象内部的状态发生改变的时候会导致其行为发生改变
//状态对象的实现 var ResutlState=function(){ var States={ state0:function(){ console.log("第0种状态"); }, state1:function(){ console.log("第2种状态"); }, state2:function(){ console.log("第3种状态"); }, state3:function(){ console.log("第4种状态"); } } function show(result){ States['state'+result] && States['state'+result](); } return{ show:show } }(); //调用 ResutlState.show(2); //状态的优化 var MarryState=function(){ var _currentSate={}; var States={ jump:function(){ console.log("跳跃"); }, move:function(){ console.log("移动"); }, shoot:function(){ console.log("射击"); }, squat:function(){ console.log("蹲下"); } } //动作控制类 var Action={ changeState:function(){ var arg=arguments; _currentSate={}; if(arg.length){ for(var i=0;i<arg.length;i++){ _currentSate[arg[i]]=true } } return this; } , goes:function(){ for(var i in _currentSate){ States[i](); } return this; } } return{ change:Action.changeState, goes:Action.goes } } //调用函数 // MarryState().change('jump','shoot').goes().goes().change('shoot').goes(); //或者 var marr =new MarryState(); marr.change('jump','shoot').goes().change('jump').goes();