zoukankan      html  css  js  c++  java
  • 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();
    

      

  • 相关阅读:
    const 深悟理解
    深拷贝与浅拷贝深究
    结队开发-最大子数组
    软件工程个人作业02
    四则运算关于加括号的思路
    实践出真知-所谓"java没有指针",那叫做引用!
    写代码的好习惯—先构思
    团队合作
    阿超超的四则运算 想啊想啊
    Github+阿超运算
  • 原文地址:https://www.cnblogs.com/dangou/p/7371356.html
Copyright © 2011-2022 走看看