1. 程式人生 > >Javascript設計模式(一)States

Javascript設計模式(一)States

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