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

    认识观察者模式:

    命名建议:

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

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

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

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

     

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

    推模型:

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

    拉模型:

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

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

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

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

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

    两个模型比较:

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

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

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

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

  • 相关阅读:
    最大流问题的几种经典解法综述
    有上下界的网络流
    hiho一下
    poj 1018
    状压dp
    hdu 1043
    Poj1015
    7.14
    sgu 128
    (zhuan)
  • 原文地址:https://www.cnblogs.com/alsf/p/8947330.html
Copyright © 2011-2022 走看看