码迷,mamicode.com
首页 > 编程语言 > 详细

Javascript设计模式(一)States

时间:2017-08-16 09:58:17      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:优化   java   state   highlight   .sh   log   对象   模式   current   

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

标签:优化   java   state   highlight   .sh   log   对象   模式   current   

原文地址:http://www.cnblogs.com/dangou/p/7371356.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!