美文网首页
js对象管理基于事件驱动

js对象管理基于事件驱动

作者: 牛马风情 | 来源:发表于2016-12-11 22:11 被阅读0次

接上一篇,公司造了一栋大别野,大别野门口有个警报器,有个喷泉,还有个大灯。

var   fountain;

var  annunciator;

var  light;

需求:

警报器 喷泉  大灯 状态联动:

打开大灯时   警报器 关闭  喷泉打开

打开警报器时   大灯关闭   喷泉关闭

打开喷泉时   大灯打开  警报关闭

白天  大灯不能打开

=================

喷泉、灯、警报器的方法合计

fountainStrat();

fountainStop();

annunciatorStart();

annunciatorStop();

lightStart();

lightStop();

===================

此外还需要一个方法 判断是否为白天

isDay();

实现三者的联动,常规模式下,给每个对象添加start,stiop 方法,会比较麻烦,并且维护扩展性能较差,可以使用基于状态驱动。

我们先定义一个状态量:

var state:

三个对象的状态  根据 state来改变

新建统一入口函数

function sendMsg(state){

}

无论 灯,喷泉,警报器那个改变 都只改变  state  发送消息事件 sendMsg(state)

添加  灯,喷泉,警报器 控制器

changefountain(msg){

if(msg==true){ 

                      fountainStrat();

                     } else{

                      fountainStop();

                      }

}

changeannunciator(msg){

                  if(msg==true){

                        annunciatorStart();

                            } else{

                       annunciatorStop();

                          }

 }

changelight(msg){

                 if(msg==true){

                 lightStart();

                 } else{

               lightStop();

             }

}

改造 sendMsg()函数。

如下,

function sendMsg(state){

         changefountain(msg);

         changeannunciator(msg);

         changelight(msg);

}

基于状态的驱动,不论三个对象那个改变都只是改变状态值,状态值改变后,使用统一的函数发送状态值到控制器里。控制器根据状态做出响应。

这样的话要修改 联通效果只需要修改某一个控制器就可以,比如灯泡白天不亮在灯泡控制器中添加时间判断

changelight(msg){

        if(isDay()){

console.log('it's day time')

}else{

         if(msg==true){

           lightStart();

             } else{

                lightStop();

         }

   }

}

响应与事件分离。

若要添加或者删除一级关联的话  则去改造sendMsg

function sendMsg(state){

changefountain(msg);

changeannunciator(msg);

//changelight(msg);  // 注释掉灯光控制器 则灯光不在联动

}

想要控制灯 最晚时间加入联动 则只需要改变isDay()函数。

=======================

本文完成:没有最好的模式,只有最合适的模式。

相关文章

  • JQuery入门

    零) js / ajax / json / jQuery js: 基于对象, 解释型, 事件驱动, 浏览器交互执行...

  • js对象管理基于事件驱动

    接上一篇,公司造了一栋大别野,大别野门口有个警报器,有个喷泉,还有个大灯。 var fountain; var ...

  • 2018-05-29JS基础

    js javascript脚本语言解释性基于对象事件驱动函数 js的组成: ECMAScript(语法) ...

  • 重拾Java EE——JavaScript

    一、js的简介 1、js是什么 js是可以嵌入到html中,是 基于对象 和 事件驱动 的 脚本语言 2、js能做...

  • 我与JS的那些陈年旧事(一)

    JavaScript概述 全称JavaScript,简称JS. JS是一门基于对象和事件驱动的脚本语言,专门为网页...

  • js笔记

    js简介 Js是一种基于事件和对象驱动的解释性、松散性的语言。 一切皆对象 javascript 布兰登艾奇 ...

  • Javascript概述

    JavaScript简介: JavaScript简称js,可以嵌入到html中,是基于对象和事件驱动的脚本语言。 ...

  • JavaScript基础01

    1、JavaScript: 基于对象和事件驱动,运行在浏览器客户端的脚本语言。 js的运行环境基于浏览器的 对象:...

  • javascript 中的事件机制

    js之事件机制 1、事件初探 1.1 js事件的概述 JavaScript事件:JavaScript是基于事件驱动...

  • JavaScript简介

    JavaScript是基于对象和事件驱动的语言,应用于客户端基于对象: 本身提供好了对象,不需要new对象事件驱动...

网友评论

      本文标题:js对象管理基于事件驱动

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