设计模式之二:观察者模式

来源:互联网 发布:顶新影音 mac 编辑:程序博客网 时间:2024/05/17 05:18

1.定义

观察者模式又称为发布-订阅模式,模型-视图模式,源-收听者或从属者模式。一个目标物件管理所有依赖于它的观察者物件,当它本身发生状态变化时,主动发出通知。是一种一对多的依赖关系。

2.角色

抽象主题:主题角色把所有注册的观察者引用保存在一个列表里,主题角色提供接口可以注册和撤销观察者角色

抽象观察者:为所有的观察者提供接口,在得到通知时,更新自己。

具体主题:保存对具体观察者有用的内部状态,在这种内部状态改变时,给观察者发出通知。

具体观察者:保存一个指向具体主题的引用,和一个与具体主题相符的状体。实现抽象观察者接口。


3.过程

注册,观察,更新,撤销

4.Java观察者模式

Java本身就支持观察者模式

Observer接口(抽象观察者)和Observable(抽象主题)接口

Observable中setChanged()和nofityObservers()比较重要

setChanged()被调用之后,会设置一个内部标志量,表明被观察者状态已经改变。

nofityObservers()被调用时,会调用所有观察者的update()来更新观察者。


被观察者刚建立时,观察者列表是空的,equal()两个空被观察者时,返回true。

5.效果

行为型模式。

观察者和被观察者之间的抽象耦合。

支持广播通信。

注意意外的更新,这也是观察者更新进行管理的原因之一。

6.缺点

观察者多的话,耗时。

被观察者循环依赖的话,系统崩溃。

如果对观察者是以异步通知的话,系统必须确保以自恰的方式进行。

观察者无法知道被观察者是以什么样的方式发生变化的。

  

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 红米手机费电快怎么办 荣耀5c忘记密码怎么办 小米之家不退货怎么办 手机号绑定过多小米账户怎么办 耐克黑色鞋褪色怎么办 买广汽传祺7s新车有问题怎么办 华为荣耀10边框掉色了怎么办 网购商家打来无货怎么办 客户拍了不发货怎么办 天猫商家欺骗买家怎么办 阿里买家投诉我发空包怎么办 苹果6s电池坏了怎么办 hm买的单鞋脏了怎么办 微店违规屏蔽搜索怎么办 ios微信支付失效怎么办 京东第三方店铺关闭怎么办 京东店铺关门了怎么办 国美退款不到账怎么办 小米小店通过了怎么办 苹果的发票丢了怎么办 苹果7p开不开机怎么办 申请退款了怎么卖家还发货怎么办 买家申请退款卖家不退款怎么办 卖家恶意不退款怎么办 欠条到期了对方不还钱怎么办 冰箱磕了一坑怎么办 办信用卡没有家庭地址的怎么办 钱付了货没收到怎么办 在苏宁易购上买东西地址错了怎么办 手机分期付款银行卡丢了怎么办 华硕笔记本鼠标不动了怎么办 韵达快递不派送怎么办 中通快递不派送怎么办 农业银行信用卡密码输错三次怎么办 农业银行卡多次输错密码怎么办 想把店长弄走怎么办 济南银座卡过期了怎么办 银座购物卡丢失后怎么办 银座的卡丢了怎么办 银行卡换了旧卡怎么办 大理市民卡丢了怎么办