• 观察者模式详解


    官方定义:定义对象之间的一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。

    认识观察者模式:

      1、目标与观察者之间的关系:目标与观察者之间是一对多的关系。

      2、单向依赖:只有目标知道什么时候通知观察者。

      3、命名模式:又称为发布-订阅模式,目标接口定义后面跟subject,观察者接口定义后面跟observer,观察者接口的更新方法建议为update,方法的参数是根据需要定义的。

      4、触发通知的时机:先改变后通知。

    观察者实现的两种方式:

      1、推模型:目标对象主动向观察者推送目标的详细信息,推送的信息通常是目标对象的全部或部分数据。

      2、拉模型:目标对象在通知的时候只传递少量信息,如果观察者需要更具体的信息,由观察者主动到目标对象获取,相当于是观察者主动在目标对象中拉数据。

    两种模式的比较:

      1、推模型是假定目标对象知道观察者所需要的数据,而拉模型是目标对象具体需要什么数据,直接把自生传递给观察者,由观察者来取值,推模型会使观察者对象难以复用;

      2、拉模型下,update方法的参数是对象本身,基本可以适应各种情况的需要。

    观察者的优点:

      1、观察者模式实现了观察者和目标之间的抽象耦合。

      2、观察者模式实现了动态联动。

      3、观察者模式支持广播通信。

    观察者的缺点:

      1、可能会引起无畏的操作。

    观察者模式衍生:

      如果观察者有个性化的设置,则需要在通知的时候区别对待。

  • 相关阅读:
    2331: [SCOI2011]地板 插头DP
    APIO2018 铜滚记
    2827: 千山鸟飞绝 非旋treap
    3682: Phorni 后缀平衡树 线段树
    4712: 洪水 基于链分治的动态DP
    20180507小测
    4923: [Lydsy1706月赛]K小值查询 平衡树 非旋转Treap
    5312: 冒险 线段树 复杂度分析
    5210: 最大连通子块和 动态DP 树链剖分
    4513: [Sdoi2016]储能表 数位DP
  • 原文地址:https://www.cnblogs.com/niuyg928/p/11300008.html
Copyright © 2020-2023  润新知