设计模式--状态模式

2017-01-19  本文已影响18人  mengxr

状态模式


然后将点击按钮所执行的逻辑扔到每个状态对象中

    var stList = {

        off: {

            btnPressed: function () {

                /*  
                 *  初始状态下点击的行为
                 */
                console.log('关灯');
                ...
                this.currState = off.on;

            }

        },

        on: {

            btnPressed: function () {

                /*  
                 *  关灯状态下点击的行为
                 */
                console.log('开灯');
                ...
                this.currState = off.off;

            }

        }   

    }

接下来改造初始化函数

  deng.prototype.init = function () {
    var self = this;
    ...
    btn.onclick = function () {

      self.currState.btnPressed.call(self);

    }
  }

完工,通过改造,将btn.onclick中大量ifelse判断运行的业务代码,委托到了每个状态对象中。
如果以后在增加状态,那个只需要在stList中增加对应的状态对象,并修改切换顺序即可。对代码的修改维护十分友好。

上一篇 下一篇

猜你喜欢

热点阅读