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

      

  • 相关阅读:
    C# 实现类库并调用
    C# pictureBox.Image获得图片的三种方法
    C# 指针使用总结
    C++ 怎样让函数返回数组
    C# 枚举与位枚举(Enum)
    Labview调用C#动态链接库dll
    C# partial 作用
    C# Internal关键字小结
    C# => 运算符
    C# 中 ??、 ?、 ?: 、?.、?[ ]
  • 原文地址:https://www.cnblogs.com/dangou/p/7371356.html
Copyright © 2011-2022 走看看