《观察者模型》ppt课件

《观察者模型》ppt课件

ID:27092682

大小:746.00 KB

页数:31页

时间:2018-12-01

《观察者模型》ppt课件_第1页
《观察者模型》ppt课件_第2页
《观察者模型》ppt课件_第3页
《观察者模型》ppt课件_第4页
《观察者模型》ppt课件_第5页
资源描述:

《《观察者模型》ppt课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Observer<观察者>模式从生活中走进观察者模式在日常生活中,常常会有这样的情形:当某件事情发生时,就应该通知所有的相关者。例如,如果我们的课程改变了时间和地点,就应该通知所有选了这门课程的同学。在软件设计中,也有类似的问题:当一个对象的状态发生变化时,如何能够通知与其相关的所有其他对象,而不用修改该对象的代码?初析观察者模型在许多设计中,经常涉及到多个对象都对一个特殊对象中的数据变化感兴趣,而且这多个对象都希望跟踪那个特殊对象中的数据变化。例如:求职中心与求职者观察者模型的定义1、定义对象间的一种一对多的依赖关系,当一个对象的状态发生变化时,所有依赖于

2、它的对象都得到通知并被自动更新。2、别名:依赖(Dependents);发布-订阅(Publish-Subscribe)。ObserverPattern(AnotherName:Dependents,Publish-Subscribe)Defineaone-to-manydependencybetweenobjectssothatwhenoneobjectchangesstate,allitsdependentsarenotifiedandupdatedautomatically.对概念的加深理解观察者模式中有一个“主题”对象和若干“观察者”对象,主题和观察

3、者之间是一对多的依赖关系。当主题的状态发生变化时,所有观察者都得到通知。例如:求职中心为主题,求职者为观察者观察者模型设计的动机1、将一个系统分割成一系列相互协作的类有一个常见的副作用:需要维护相关对象的一致性。我们不希望为了维持一致性使各类紧密耦合,因为这样降低了它们的可重用性。2、观察者模式使得任意数目的观察者不必知道彼此的存在,且主题发生变化时可以得到主题的通知,而同步改变状态。是一种很轻松的耦合。具有很好的可重用性。设计模型的原则1、将不变部分与固定比便的部分相离。对该原则的理解是:将变化的部分拿来进行封装,以便以后你可以修改它而不会影响那些不变的部

4、分。这一原则几乎是所有设计模式的基础,所有设计模式都提供一种机制:让系统的某些部分独立于其他部分而发生变化。2、对接口编程,而不是对实现编程实现观察者模式的过程:实现观察者模式有很多形式,比较直观的一种是“订阅------通知-----撤销订阅”的形式下。下面我们来详细的描述这一过程:观察者观察者(observer)将自己注册到被观察对象(subject)中,被观察对象(目标)将观察者存放在一个容器(container)里。3、被观察对象被观察对象发生了某些变化(如,发行方发行新的报纸),从容器中得到所有注册过的观察者,将变化通知观察者4、撤销观察观察者告诉

5、被观察者要撤销观察,被观察者从容器中将观察者去除。(观察者将将自己注册到观察者容器时,被观察者不应该过问观察者的具体类型,而是应该使用观察者的接口。这样的优点是:假定程序中还有别的观察者,那么只要这个观察者也是相同的接口实现即可。一个被观察者可以对应多个观察者,当被观察者发生变化的时候,他可以将消息通知所有的观察者。基于接口,而不是具体的实现,这一点位程序提供了更大的灵活性。观察者模式的结构中的角色主题(Subject)观察者(Observer)具体主题(ConcreteSubject)具体观察者(ConcreteObserver)观察者模式里角色的详细解析

6、1、抽象主题(Subject)角色:主题角色把所有的观察者对象的引用保存在一个列表里;每个主题都可以有任何数量的观察者。主题提供一个接口可以加上或撤销观察者对象;主题角色又叫做抽象被观察者(Observable)角色;抽象主题角色,有时又叫做抽象被观察者角色,可以用一个抽象类或者一个接口实现;在具体的情况下也不排除使用具体类实现。2、抽象观察者(Observer)角色:为所有的具体观察者定义一个接口,在得到通知时更新自己;抽象观察者角色,可以用一个抽象类或者一个接口实现;在具体的情况下也不排除使用具体类实现。3、具体主题(ConcreteSubject)角色

7、:保存对具体观察者对象有用的内部状态;在这种内部状态改变时给其观察者发出一个通知;具体主题角色又叫作具体被观察者角色;具体主题角色,通常用一个具体子类实现。4、具体观察者(ConcreteObserver)角色:保存一个指向具体主题对象的引用;和一个与主题的状态相符的状态。具体观察者角色实现抽象观察者角色所要求的更新自己的接口,以便使本身的状态与主题的状态自恰。具体观察者角色,通常用一个具体子类实现。呵呵观察者模式类图举例说明模式的结构的描述与使用例:有一个大学毕业生和一个归国留学者都希望能及时知道求职中心最新的职业需求信息。1.主题:Subject.jav

8、apublicinterfaceSubject{//

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。