博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
观察者模式
阅读量:7223 次
发布时间:2019-06-29

本文共 650 字,大约阅读时间需要 2 分钟。

观察者模式:发布-订阅模式、模型视图模式、源--监听器模式、从属者模式。

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

优点: 1、观察者和被观察者是抽象耦合的

            2、建立一套触发机制

            3、观察者模式满足“开闭原则”

缺点:1、观察者模式没有相应的机制让观察者知道所观察的目标对象是怎么发生变化的,而仅仅是知道观察目标发生了变化

            2、在观察者和被观察者之间产生循环依赖的话,可能会导致系统崩溃

使用场景:当一个对象的数据更新时需要通知其它对象,但这个对象又不希望和被通知的那些对象形成紧耦合

                  一个对象数据更新时,它需要让其他对象都需要更新自己的数据,但却又不知有多少对象需要更新数据

 观察者模式的两种数据方式:推数据、拉数据

推数据方式是指具体主题变化后的数据全部交给具体观察者,即将变化后的数据传递给具体观察者的用于更新数据的方法的参数。

 拉数据方式是指具体主题将变化后的数据交给具体观察者,而是提供了获得这些数据的方法,具体观察者得到通知后,可以调用具体主题提供的方法得到数据。但需要自己判断数据是否已经更新。

相关例子:1、求职中心与求职者。求职者关心求职中心的信息,求职中心能及时将最新的职业需求信息告知求职者。

                2、书店定期发布图书信息。有两位顾客对此很感兴趣,但是一位关心图书名称和价格,一位关心作者和出版社。

 

转载于:https://www.cnblogs.com/cye9971-/p/10588588.html

你可能感兴趣的文章
Gradle 多渠道打包的使用和错误分析(转)
查看>>
压力测试衡量CPU的三个指标:CPU Utilization、Load Average和Context Switch Rate
查看>>
C/C++程序员必须熟练应用的开源项目
查看>>
win32下编译glog
查看>>
C#编程(五十二)----------有序列表
查看>>
攻防工具
查看>>
获取包下的类名
查看>>
Fluent UDF【7】:解释型UDF
查看>>
cocos2dX 之数据存储
查看>>
Android应用程序安装过程浅析
查看>>
浅谈浏览器兼容解决方案
查看>>
react-native 项目实战 -- 新闻客户端(1) -- 初始化项目结构
查看>>
ToggleButton开关状态按钮控件
查看>>
kafka单机模式部署安装,zookeeper启动
查看>>
CentOS增加用户到sudo用户组
查看>>
C++ delete operator做了什么事
查看>>
partproble在RHEL 6下无法更新分区信息
查看>>
linux服务之nfs
查看>>
linux ps命令,查看某进程cpu和内存占用率情况, linux ps命令,查看进程cpu和内存占用率排序。 不指定...
查看>>
iHover – 30+ 纯 CSS 实现的超炫的图片悬停特效
查看>>