注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

阿当的博客

世界是个游乐场

 
 
 

日志

 
 

观察者模式  

2008-09-17 18:19:00|  分类: 设计模式 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

 当一个对象的改变需要同时改变其它多个对象,特别是不知道具体有多少对象时,可以考虑使用观察者模式。

 观察者模式中有两个角色,一个是通知者,一个是被通知者。通知者类必须有三个方法,添加被通知者方法,删除被通知者方法,通知方法,必须有一个属性,用于保存通知者,通常是个数组类型。添加和删除方法直接对数组进行添加和删除操作。而通知方法里会使用一个遍历,让所有保存在数组中的被通知者调用某个方法,也就是通知它们做出反应。被通知者类必须实现一个方法,就是用于被通知时做出的反应的方法,这个方法事实上是要被通知者类的通知方法调用的。目前为止,还只是通知者单方面地对被通知者进行通信。如何让被通知者得到通知者新的状态呢?通过对被通知者类的构造函数传入通知者对象,从而让被通知者可以得到通知者对象的状态。因为对于对象类型来说,用的是传址方式,所以,在被通知者的反应方法中,如果通知者状态发生了变化,被通知者是可以随时得到新的状态的。

 也就是说,通知者通过添加和删除被通知者,将通知者列表保存在自己的属性中,在通知方法是遍历实现通知每个被通知者;而被通知者通过在构造函数中被传到通知者,从来和通知者建立通信,得到通知者变化的新状态。通知者和被通知者双向耦合着。

  评论这张
 
阅读(3)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018