Javascript设计模式(一)States

本文详细介绍如何使用JavaScript实现状态模式,通过具体示例展示不同状态下的行为变化,包括基本的状态对象实现及更优的状态管理方式。

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

  

转载于:https://www.cnblogs.com/dangou/p/7371356.html

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值