zoukankan      html  css  js  c++  java
  • 设计模式之观察者模式

    观察者模式(observer)又名发布-订阅(Publish/Subscribe)模式

    观察者模式是一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化是,会通知所有的观察者对象,使他们能够自动更新自己。

    观察者模式的结构图

    捕获

    Subject被观察者:定义了被观察者必须实现的职责,它必须能够在运行时添加、取消观察者。一般是抽象类或接口。

    Observer观察者:定义了在接受到消息后通过update()对接受到的消息进行处理。

    ConcreteSubject具体的被观察者:继承或实现Subject,定义具体的业务逻辑

    ConcreteObserver具体的观察者:继承或实现Observer,每个观察者在接收到消息后都有各自的处理逻辑

    适用性

    当一个抽象模型有两个方面,其中一个方面依赖于另一个方面

    当一个对象的改变需要改变其他对象的时候,而其他对象不知道具体的个数

    优点

    增加观察者或增加被观察者都不会改动现有的代码,实现了关闭-开放原则

    让耦合的双方都依赖于抽象而不是依赖于具体的实现,从而使得各自的变化都不会影响到另一边的变化

    不足

    被观察者通知观察者时是没有固定顺序的,也就是说是随机的通知,而这种随机又是基于线性的,所以在观察者很多的情况下完成一次通知耗时会比较长,这时可考虑异步。

  • 相关阅读:
    day25:接口类和抽象类
    vue1
    How the weather influences your mood?
    机器学习实验方法与原理
    How human activities damage the environment
    Slow food
    Brief Introduction to Esports
    Massive open online course (MOOC)
    Online learning in higher education
    Tensorflow Dataset API
  • 原文地址:https://www.cnblogs.com/Excellent/p/2286937.html
Copyright © 2011-2022 走看看