Object-Oriented Design Patterns面向对象的设计模式

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

什么时候用观察者模式?
某一个对象的状态发生变化的时候,某些其它的对象需做出相应的改 变. 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监 听某一个主题对象.
Sean,不干007,最近在忙些什么? 是啊,自从不干007后,偶尔拍些 片,主要是在炒股,你呢? 我也在炒股,电影也难拍啊.可是炒股 也烦啊,天天要跑股票交易市场. 你还跑到股票交易市场去?买个股 票机不就行了.这不,我腰间的股 票机又震动了,看来价格又变了. 这么先进了,那我可要学习学习. 我要到网上去看看行情,我这股票 机只能通知我一下,具体的价格还 要我自己去看的.
Object-Oriented Design Patterns
我是一个间谍
源码工作室 2006.6
股票市场
股票市场瞬息万变,掌握第一手的讯息,就掌握了财富.
讯息哪里来?
股票机
B
股票交易市场
A 股票讯息中心
C
手机
手机
E
D
PC
如何工作的?
很多投资者都在股票讯息中心注册了一个账号,当然在用户还能订阅自己关心的股票, 一旦股票的讯息有所变动,讯息中心就会通知相应的用户,告诉他们股票讯息有所变 化了.然后投资者根据讯息可以作出各自的应对措施.
灵活增减观察者
观察者可以灵活的增减.
当Roger不炒股,就去注销账号,他就不会再收到股票行情了,当然 如果他以后还想炒股,那他再注册就行了. 对于股票信息中心,它是不知道每个投资者的具体情况的,它也无需 关系这些,它仅仅知道的是观察者的接口(Update). 这里就像订牛奶一样,牛奶公司只知道你的地址,把牛奶每天按时送 到就可以了,而牛奶公司无需知道你家有几口人等信息.
观察者(Observer)模式
上面介绍的就是一个典型的Observer设计模式. 观察者模式又叫做发布-订阅(Publish/Subscribe)模式,模型-视图 (Model/View)模式,源-监听器(Source/Listener)模式或从属者 (Dependents)模式.
你能举几个生活中可以应用观察者模式的例子? 你能举几个生活中可以应用观察者模式的例子?

拉模式
当通知消息来之时,通知的函数不带任何相关的信息,而 是要观察者主动去被观察的对象那里去"拉"信息.
优点: 优点: 1. 可以主动去取自己感 星期的信息. 星期的信息. 2. 如要添加一个参数,无 如要添加一个参数, 需修改观察者. 需修改观察者. 缺点: 缺点: 1. 观察者与被观察者 有一定的联系 .
那也挺麻烦的,听说现在市场上有了 新的信号,能把股票的价格也传过来的. 真的,那我们一起去看看.
Roger 最近不知如何?听说他也炒股. 他不炒股很久了,所以他注销 了账号,也就不会知道股市行 情了. 哎,看来炒股也难啊,要不是年纪大 了,还真想中,出现了两种股票机: 只是起通知作用的股票机 能把股票价格传过来的股票机 注销了的用户,就收不到股票行情了.
观察者模式的两种形式
推模式 拉模式 --能把股票价格传过来的股票机 --只是起通知作用的股票机
推模式
推模式是当通知消息来之时,把所有相关信息都通过参数的形式"推 给"观察者.
优点: 优点: 1. 所有信息通过参数传递 过来,直接,简单, 过来,直接,简单,观察者 可以马上进行处理. 可以马上进行处理. 2. 观察者与被观察者 没有一点联系, 没有一点联系, 两者几乎没有耦合 缺点: 缺点: 1. 所有信息都强迫推给 观察者,不管有用与否. 观察者,不管有用与否. 2. 如果想添加一个参数, 如果想添加一个参数, 那就需要修改所有观察者 的接口函数. 的接口函数.
相关文档
最新文档