设计模式之行为型观察者模式

就像一辆汽车的行驶系统,观察者模式中,你需要知道车内坐了几个人(维护观察者列表),当汽车发生到站、停车、开车...这些事件(被订阅者事件)时,你需要给这个列表中订阅对应事件的的每个人进行通知。

又被称作发布-订阅模式或消息机制,定义了一种依赖关系,解决了主体对象与观察者之间功能的耦合。
观察者只要订阅了被观察者的事件,那么当被观察者的状态改变时,被观察者会主动去通知观察者,而无需关心观察者得到事件后要去做什么,实际程序中可能是执行订阅者的回调函数
在团队开发中,经常是一个人负责一个模块,那么每人负责的模块之间要如何进行沟通呢?比如你实现一些需求需要添加一些代码,但是这个需求需要其他模块配合,但是每个模块都是不同人写的,你不想因为新添加的代码影响到他人实现的功能,这个时候就需要用到观察者模式了。
观察者模式最主要是解决类或对象之间的耦合,解耦两个互相依赖的对象,使其依赖于观察者的消息机制。他有一个消息容器和三个方法,订阅消息方法,取消订阅消息方法,发送订阅消息方法。

var Observer = (function() {
  // 防止消息队列暴露而被篡改,故将消息容器作为静态私有变量保存
  var __messages = {};
  return {
    // 注册信息接口
    regist: function() {},
    // 发布信息接口
    publish: function() {},
    // 移除信息接口
    cancel: function() {}
  }
})();

对于任何一个订阅者来说,其他订阅者对象的改变不会影响到自身,其自身既可以是消息的发出者也可以是消息的执行者,这都依赖于调用观察者对象中的三种方法(订阅,注销,发布消息)中的哪一种。

观察者模式属于对象间一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知。让多个观察者同时监听一个对象,当这个对象发生了变化时,它会广播给监听它的观察者,使他们自动更新。

http://www.cnblogs.com/camille666/p/pub_sub_design_pattern_1.html

http://www.cnblogs.com/camille666/p/pub_sub_design_pattern_2.html

原文地址:https://www.cnblogs.com/camille666/p/design_pattern_behavior_observer.html