论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
大数据
›
数据仓库与分析
›
观察者模式(Observer Pattern)
观察者模式(Observer Pattern)
河曲智叟
金牌会员
|
2024-11-4 18:17:17
|
显示全部楼层
|
阅读模式
楼主
主题
889
|
帖子
889
|
积分
2667
观察者模式(Observer Pattern)是一种行为设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式提供了一种对象行为型的设计,使得一个对象可以订阅另一个对象的事故,并在事故触发时收到通知。
意图
定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
当一个对象的状态发生变化时,能够自动通知其他干系联的对象。
促进松耦合的设计,让观察者和被观察者之间的通信变得简朴且独立。
支持广播通信,即一个主题可以有恣意数目的观察者。
布局
观察者模式包罗以下几种角色:
Subject(被观察者/主题)
:也被称为可观察对象,它生存了一个观察者列表,并提供了添加、删除以及通知观察者的接口。
ConcreteSubject(具体被观察者)
:实现了Subject接口,维护了一个具体的观察者列表,并在状态改变时通知它们。
Observer(观察者)
:为所有的具体观察者定义了一个更新接口。
ConcreteObserver(具体观察者)
:实现了Observer接口,以保持与具体主题的联系。当主题的状态改变时,具体观察者会接收到通知。
布局图
+-------------------+ +------------------+
| Subject |-------| Observer (抽象) |
+-------------------+ +------------------+
| -observers: List |<------| + update() |
+-------------------+ +------------------+
| + attach(Observer)| | |
| + detach(Observer)| | |
| + notify() | | |
+-------------------+ +------------------+
^ ^
| |
+-----------+-----------------+
| |
+---------------v-------------+ +-------v---------+
| ConcreteObserverA (具体观察者A) | |ConcreteObserverB |
+----------------------------+ +---------------+
| + update() | | + update() |
+----------------------------+ +---------------+
复制代码
在这个图中,Subject类维护了一个观察者列表,而且提供了添加、移除观察者的方法。当Subject的状态发生变化时,它会调用notify()方法来通知所有注册的观察者。每个观察者都实现了update()方法,这个方法会在它们接收到通知时被调用。
实用性
当一个抽象模型有两个方面,此中一个方面依赖于另一个方面。将这两个方面封装在差别的对象中可以使它们各自独立地改变和复用。
当对一个对象的修改须要同时改变其他对象,而不知道具体有多少对象有待改变。
当一个对象应该可以在运行时通知其他对象,而不须要假定这些对象是谁。换句话说,你不想使这些对象彼此紧密耦合。
观察者模式是实现发布-订阅机制的底子,在GUI框架、消息体系、事故驱动架构等很多场景下都有广泛的应用。通过利用观察者模式,我们可以淘汰体系中的直接依赖,提高体系的灵活性和可扩展性。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
河曲智叟
金牌会员
这个人很懒什么都没写!
楼主热帖
黑客常见攻击流程
为什么你的局域网需要https加密?怎么 ...
WebGL 及其在 WebRTC 中的应用
Flutter项目打包生成APK
为什么一定要从DevOps走向BizDevOps? ...
综述计算机中关于数符的表示方法 ...
大数据 - ClickHouse
【计算机网络】基础知识点
dotnet 使用 Crossgen2 对 DLL 进行 Re ...
【Java并发入门】03 互斥锁(上):解 ...
标签云
存储
挺好的
服务器
快速回复
返回顶部
返回列表