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

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

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

    观察者模式的结构图

    捕获

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

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

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

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

    适用性

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

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

    优点

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

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

    不足

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

  • 相关阅读:
    使用pipenv管理虚拟环境
    使用cookiecutter创建django项目
    Django中ModelViewSet的应用
    Redis添加历史浏览记录
    Django中配置用Redis做缓存和session
    点击即复制
    PostGreSQL数据库安装配置说明
    IntelliJ IDEA 2017.1.4 x64配置说明
    Struts2之2.5.10.1HelloWorld
    Apache Shiro系列(1)
  • 原文地址:https://www.cnblogs.com/Excellent/p/2286937.html
Copyright © 2011-2022 走看看