js状态模式

作者: 悟空你又瘦了 | 来源:发表于2018-02-24 11:18 被阅读0次

介绍

状态模式定义一个对象,这个对象可以通过管理其状态从而使得应用程序作出相应的变化。状态模式是一个非常常用的设计模式,它主要有两个角色组成:
(1)环境类:拥有一个状态成员,可以修改其状态并作出相应反应。
(2)状态类:表示一种状态,包含其相应的处理方法

1.控制红绿灯状态案例

//我们首先定义一个环境类,在这里也就是菜单对象,拥有一个状态成员,可以修改其状态并作出相应反应
var trafficLight = (function () {
      var currentLight = null;
      return {
       change: function (light) {
           currentLight = light;
           console.log(currentLight)    ---对应各自的实例对象
           currentLight.go();   ---实例对象的方法           
       }
   }
})();

//我们首先定义状态类,表示一种状态,包含其相应的处理方法
function RedLight() { }
RedLight.prototype.go = function () {
  console.log("this is red light");
}
function GreenLight() { }
GreenLight.prototype.go = function () {
  console.log("this is green light");
}
function YellowLight() { }
YellowLight.prototype.go = function () {
  console.log("this is yellow light");
}

trafficLight.change(new RedLight());      ----this is red light
trafficLight.change(new YellowLight());   ----this is yellow light

2.控制菜单键的显示和隐藏状态案例

//我们首先定义一个环境类,在这里也就是菜单对象,拥有一个状态成员,可以修改其状态并作出相应反应
function Menu() { }
Menu.prototype.toggle = function (state) {
  state();
}

//我们首先定义状态类,表示一种状态,包含其相应的处理方法
var menuStates = {
  "show": function () {
      console.log("the menu is showing");
  },
  "hide": function () {
      console.log("the menu is hiding");
  }
};

//这段代码实例化了一个Menu对象,然后分别切换了显示和隐藏两种状态,如果有第三种状态,我们只需要
//menuStates添加相应的状态和处理程序即可
var menu = new Menu();
menu.toggle(menuStates.show);
menu.toggle(menuStates.hide);

相关文章

  • js状态模式

    介绍 状态模式定义一个对象,这个对象可以通过管理其状态从而使得应用程序作出相应的变化。状态模式是一个非常常用的设计...

  • JS设计模式-状态模式

    介绍 一个对象有状态变化 每次状态变化都会触发一个逻辑 不能总是使用if...else来控制eg: 红绿灯 收藏...

  • js状态模式之我见

    js的设计模式两年前就开始接触了,起初只是跟着张容铭小哥的《JavaScript设计模式》学学js的面向对...

  • JS设计模式之状态模式

    # 什么是“状态模式”? 状态模式:对象行为是根据状态改变,而改变的。特点:正是由于内部状态的变化,导致对外的行为...

  • 2018-04-01

    什么是vuex? Vuex 是一个专为Vue.js用程序开发的状态管理模式。 状态管理模式中的状态是指什么状态?为...

  • Vuex - 1 - 敲门

    1.Vuex的意义 为Vue.js应用开发的状态管理模式以一个全局单例模式管理组件共享的状态 2.状态管理模式 2...

  • 前端设计模式

    JS设计模式一:工厂模式jS设计模式二:单例模式JS设计模式三:模块模式JS设计模式四:代理模式JS设计模式五:职...

  • 关于vuex

    1、vuex是什么? Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。 什么是“状态管理模式”? ...

  • vuex

    vuex是什么 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式也是为 Vue.js 设计的状态管理...

  • Vuex知识整理

    Vuex是什么? Vuex是为了Vue.js应用程序开发的状态管理模式。那什么是“状态管理模式”呢?通俗来讲,它就...

网友评论

    本文标题:js状态模式

    本文链接:https://www.haomeiwen.com/subject/bkbxxftx.html