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();

  

posted @ 2017-08-16 07:48  咚咚锵咚呛  阅读(256)  评论(0编辑  收藏  举报