zoukankan      html  css  js  c++  java
  • 模式的秘密-观察者模式(二)

    认识观察者模式:

    命名建议:

    第一:目标接口的定义,建议在名称后面加上Subject。

    第二:观察者接口的定义,建议在名称后面跟上Observer。

    第三:观察者接口的更新方法,建议名称为Update。

    触发通知的时机:完成了状态维护后触发。

     

    实现的两种方式:推模型和拉模型

    推模型:

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

    拉模型:

    目标对象在通知观察者的时候,只传递少量信息。如果观察者需要更具体的信息,由观察者主动到目标对象中获取,

    相当于是观察者从目标对象中拉数据。

    一般这种模型的实现中,会把目标对象自身通过update方法传递给观察者(上一节例子就是该模式)

    如果要把上一节的拉模型改成推模型,只需要把update方法以及相关方法的观察者对象修改为weatherContent,

    把所有的信息全部传给观察者调用,而不是观察者自己通过传入的目标对象获取。

    两个模型比较:

    推模型是假定目标对象知道观察者需要的数据。

    拉模型是目标对象不知道观察者需要什么数据,因此把自身传给观察者,由观察者来取值。

    推模型会使得观察者对象难以复用。

    拉模型下:update方法的参数是目标对象本身,基本上可以适用各种情况的需要。

  • 相关阅读:
    firewalld
    autossh反向隧道
    SSH端口转发
    yii2.0 控制器加载不同的user组件
    php笔记整理
    mysql绿色版安装问题解决(ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061))
    mysql笔记整理
    深入PHP EOF(heredoc)用法详解
    php中const与define的使用区别 详解
    phpstorm8 设置及license key
  • 原文地址:https://www.cnblogs.com/alsf/p/8947330.html
Copyright © 2011-2022 走看看