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

      

  • 相关阅读:
    在ConcurrentModificationException异常上的联想
    记录一下自己爬虎牙LOL主播的爬虫思路
    ajax解决跨域问题
    解决多线程下数据库操作问题
    浅谈时间复杂度
    想一下,最大公约数怎么求
    IO流与IO缓冲
    循环移位
    3Sum探讨(Java)
    Two Sum(两个数的相加)
  • 原文地址:https://www.cnblogs.com/dangou/p/7371356.html
Copyright © 2011-2022 走看看