Javascript設計模式(一)States
阿新 • • 發佈:2017-08-16
tsa 調用 ++ for true 一個 show 改變 設計模式
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();
Javascript設計模式(一)States