美文网首页
前端观察者模式

前端观察者模式

作者: overflow_hidden | 来源:发表于2017-02-10 10:40 被阅读28次

1.观察者模式

观察者模式又叫发布-订阅模式,它定义了一种一对多的关系,让多个观察者对对象同时监听某一个目标对象(为了方便了解,以下将观察者对象叫做订阅者,对目标对象叫做发布者)。发布者的状态变化时就会通知所有订阅者,使它们能够自动更新自己。

中心思想:促进松散耦合,一为时间上的解耦,二为对象之间的解耦。让耦合的双方都依赖于抽象,而不是依赖于具体,从而使得各自的变化都不会影响到另一边的变化。

应用:假如我们网站页面里面的信息获取,需要根据用户是否登录来发送请求。比如说购物车,用户信息,头像,消息列表等,那么它们和用户信息之间产生了强烈的耦合。比如下面的模式:

login.success(function(data){

  header.setHeader(data);

  nav.setNav(data);

  message.refresh();

  cat.refresh();

});

等到后期维护,你又需要增加一个其他模块,比如说用户订单列表,你可能有需要在这个模块里面去添加一部分内容。你就需要不断的去重构这部分代码。

而观察者模式就是在用户登录成功之后向这些模块发送登录成功消息,这些模块可根据接受的消息进行相关操作。

$.ajax('http:// xxx.com?login',function(data){// 登录成功

    pubsub.publish('loginSucc',data);// 发布登录成功的消息

});

// 各模块监听登录成功的消息:

var  header=(function(){// header模块

pubsub.subscribe('loginSucc',function(data){

   header.setHeader(data.avatar);

});

return{

    setHeader:function(data){

       console.log('设置header模块的头像');

    }

 };

})();

var nav=(function(){// nav模块

     pubsub.subscribe('loginSucc',function(data){

         nav.setNav(data.avatar);

    });

  return{

     setNav:function(avatar){

        console.log('设置nav模块的头像');

    }

  };

})();

优点

1.支持简单的广播通信,自动通知所有已经订阅过的对象;

2.页面载入后发布者很容易与订阅者存在一种动态关联,增加了灵活性;

3.发布者与订阅者之间的抽象耦合关系能够单独扩展以及重用。

缺点

1.创建订阅者本身要消耗一定的时间和内存,而且当你订阅一个消息后,也许此消息最后都未发生,但这个订阅者会始终存在于内存中;

2.虽然可以弱化对象之间的联系,但如果过度使用的话,对象和对象之间的必要联系也将被深埋在背后,会导致程序难以跟踪维护和理解。

原文:http://web.jobbole.com/87809/ 如何实现消息传播

http://www.cnblogs.com/TomXu/archive/2012/03/02/2355128.html

相关文章

  • 1-观察者模式与发布订阅“模式”

    一、观察者模式 观察者模式在前端工程中是很常见的设计模式,因为前端交互中充斥着大量多控件联动的交互,当参与联动的组...

  • Javascript设计模式之观察者模式

    观察者模式 观察者模式(Observe)是前端开发中常用的一种设计模式,在各大框架中都有使用。 当对象间存在一对多...

  • 前端常用设计模式

    前端常见的设计模式主要有以下几种: 单例模式 工厂模式 策略模式 代理模式 观察者模式 模块模式 构造函数模式 混...

  • Typescript 观察者模式(Observer)

    标签: 前端 设计模式 观察者模式 typescript observer 请仔细阅读下面代码,理解其中的设计理念...

  • web前端之面试提纲

    前端基础 JS 原型链机制的理解 设计模式:了解基本的前端设计模式,单例、适配器、工厂、观察者。 跨域的方式、同源...

  • 前端观察者模式

    1.观察者模式 观察者模式又叫发布-订阅模式,它定义了一种一对多的关系,让多个观察者对对象同时监听某一个目标对象(...

  • 11.9设计模式-观察者模式-详解

    设计模式-观察者模式 观察者模式详解 观察者模式在android中的实际运用 1.观察者模式详解 2.观察者模式在...

  • 前端常用设计模式

    前端常见的设计模式主要有以下几种:1. 单例模式2. 工厂模式3. 策略模式4. 代理模式5. 观察者模式6. 模...

  • RxJava基础—观察者模式

    设计模式-观察者模式 观察者模式:观察者模式(有时又被称为发布(publish )-订阅(Subscribe)模式...

  • 前端面试考点之手写系列

    1、观察者模式 观察者模式(基于发布订阅模式) 有观察者,也有被观察者。 观察者需要放到被观察者列表中,被观察者的...

网友评论

      本文标题:前端观察者模式

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