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


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

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

    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

  • 相关阅读:
    【长沙集训】2017.9.11
    Miller-Rabin素数测试
    数论模板
    树状数组 区间修改+区间查询
    POJ 2104:K-th Number 整体二分
    Java中 VO、 PO、DO、DTO、 BO、 QO、DAO、POJO的概念
    redhat6.5 配置使用centos的yum源
    Failed to start firewalld.service: Unit firewalld.service is masked
    CentOS7安装iptables防火墙
    Linux下的tar压缩解压缩命令详解
  • 原文地址:https://www.cnblogs.com/camille666/p/design_pattern_behavior_observer.html
Copyright © 2020-2023  润新知