观察者模式

作者: dd85bd3cabef | 来源:发表于2017-05-16 14:57 被阅读1次

    观察模式的一般形式

    利用java默认observable接口


    • setChanged方法用于标记是否已经发生了改变,负责维护一个Flag。
    • 在notifyObserve方法中,判断Flag后,依次对所有oberser进行更新。
    • notify()的重載代表“pull”,而notify(object arg)代表的方式为“push”。push是观察主题主动推送数据给观察者,而pull是观察者通过调用观察主题的get系列方法获得数据
    • 观察者的update()方法需要observe o 和 object arg两个参数来表示从哪个主体,Push来的数据

    观察主题

    观察者

    observable具有极大的缺陷,在java中,它被定义成一个类,而非接口,所以想要有一个具有Observable和其他类功能的类就很难。

    java中很多的观察者都以Listener的形式呈现

    设计原则的体现:

    • 找出程序中变化的方面,然后将其和固定不变的方面分离
      在观察者模式中,会改变的是主题的状态和观察者的数目和类型。这个模式中,改变观察者并不会改变主体。
    • 针对接口编程,而不针对实现编程
      主题和观察者都使用接口。观察者利用主题的接口注册和注销,而主题通过观察者的接口通知观察者进行改变。
    • 多用组合,少用继承
      通过组合将很多观察者组合进主题。观察者的行为对象并不是继承来的,而是通过组合,组合进观察者类的。

    相关文章

      网友评论

        本文标题:观察者模式

        本文链接:https://www.haomeiwen.com/subject/ruzcxxtx.html