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

      

  • 相关阅读:
    Jest | expect常用匹配方法
    typescript | typeScript 笔记
    好用的思维脑图
    VSCode launch.json 配置详解
    各种语法技术栈文档汇总|api文档集合
    浏览器的运行机制
    js字符串转数字长度限制|超过长度有误差
    css对话框| 气泡框| css箭头
    nginx和php-fpm的用户权限
    mac安装redis拓展
  • 原文地址:https://www.cnblogs.com/dangou/p/7371356.html
Copyright © 2011-2022 走看看