观察者模式(对象行为型)

编程入门 行业动态 更新时间:2024-10-15 12:32:47

<a href=https://www.elefans.com/category/jswz/34/1765125.html style=观察者模式(对象行为型)"/>

观察者模式(对象行为型)

由来

 OO开发的一个主导原则是给对象正确地分配职责
 一个对象只应做一件事,而且要将它做好
 提高重用性和可维护性
 正确划分任务重要的领域是用户界面和基础业务逻辑间的交互
 更改用户界面不会对应用程序的其他部分产生连带影响
 业务要求也可能会发生变化
这一切与用户界面无关
 两组要求都会发生变化

 自GUI 出现以后开发的很多面向对象的框架均支持将用户界面从应用程序的其他部分中划分出来
 将系统分割成一系列相互协作的类有也存在一些不足:
1. 需要维护相关对象间的一致性
2. 为维持一致性而使各类紧密耦合,可能降低其可重用性
 没有理由限定依赖于某数据对象的对象数目, 对相同的数据对象可以有任意数目的不同用户界面。

意图和动机

 意图

 定义对象间的一种一对多的依赖关系
 当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新

 动机

 建立一种对象与对象之间的依赖关系
 一个对象发生改变时将自动通知其他对象
 其他对象将相应做出反应

 两个概念,观察者和被观察者
 一个对象可以被多个“观察者”所观察
 “被观察者”与“观察者”是一个一对多的关系
 “被观察者”中会有一个“观察者”的集合,注册“观察者”

适用场合

 当一个抽象模型有两个方面, 一方面依赖于另一
方面。将二者封装在独立对象中以使它们可以独立被改变和复用
 一个对象的改变需要同时改变其它对象, 但不知
道具体有多少对象有待改变
 当一个对象必须通知其它对象,而它又不能假
定其它对象是谁。换言之, 不希望这些对象紧密耦合

例:





效果

 Observer模式允许你独立的改变目标和观察者
 优点
 Subject和Observer之间松偶合,可以各自独立改变
 Subject在发送广播通知时,无须指定具体的Observer,Observer可以自己决定是否要订阅Subject的通知
 高内聚、低偶合
 缺点
 松偶合导致代码关系不明显,有时可能难以理解
 一个Subject被大量订阅,广播通知时可能会有效率问题

更多推荐

观察者模式(对象行为型)

本文发布于:2023-07-28 20:31:53,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1301641.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:观察者   对象   模式

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!