观察者模式
15页1、Java观察者模式的浅析简单地说,观察者模式定义了一个一对多的依赖关系,让一个或多个观察者对象监察一个主题对 象。这样一个主题对象在状态上的变化能够通知所有的依赖于此对象的那些观察者对象,使这些 观察者对象能够自动更新。观察者模式的结构观察者(Observer)模式是对象的行为型模式,又叫做发表-订阅(Publish/Subscribe) 模式、模型-视图(Model/View )模式、源-收听者(Source/Listener)模式或从属者(Depe ndents) 模式。本模式的类图结构如下:图 1 、观察者模式的静态结构可从类图中看清楚。在观察者模式里有如下的角色:.抽象主题(Subject)角色:主题角色把所有的观察者对象的引用保存在一个列表里;每 个主题都可以有任何数量的观察者。主题提供一个接口可以加上或撤销观察者对象;主题角色又 叫做抽象被观察者(Observable)角色;interfaceSui)ject+ atiach:void+ ech:void+ n of/iiO b sefves.vci/cf图 2 、抽象主题角色,有时又叫做抽象被观察者角色,可以用一个抽象类或
2、者一个接口实现;在具体的情 况下也不排除使用具体类实现。.抽象观察者(Observer)角色:为所有的具体观察者定义一个接口,在得到通知时更新 自己;interfaceObs&ver+ update .void图 3 、抽象观察者角色,可以用一个抽象类或者一个接口实现;在具体的情况下也不排除使用具体类实现。.具体主题(ConcreteSubject)角色:保存对具体观察者对象有用的内部状态;在这种内部状态改变时给其观察者发出一个通知;具体主题角色又叫作具体被观察者角色;SwjtyecfConcreteSubjectobserversVectorVector+ attachvoid+ detach:void+ ncti,Observ,ers:Yoid+ observers Enumeration图 4 、具体主题角色,通常用一个具体子类实现。具体观察者(ConcreteObserver)角色:保存一个指向具体主题对象的引用;和一 个与主题的状态相符的状态。具体观察者角色实现抽象观察者角色所要求的更新自己的接口,以 便使本身的状态与主题的状态自恰。ObserverConcreteObser
3、ver+ updat e void图 5 、具体观察者角色,通常用一个具体子类实现。下面给出一个示意性实现的Java代码。首先在这个示意性的实现里,用一个Java接口实 现抽象主题角色,这就是下面的Subject接口:public interface Subjectpublic void attach(Observer observer);public void detach(Observer observer);void notifyObservers();代码清单1、Subject接口的源代码。这个抽象主题接口规定出三个子类必须实现的操作,即attach。用来增加一个观察者对 象;detach()用来删除一个观察者对象;和notifyObservers()用来通知各个观察者刷新它 们自己。抽象主题角色实际上要求子类保持一个以所有的观察者对象为元素的列表。具体主题则是实现了抽象主题Subject接口的一个具体类,它给出了以上的三个操作的具 体实现。从下面的源代码可以看出,这里给出的Java实现使用了一个Java向量来保存所有的 观察者对象,而attach。和detach()操作则是对
4、此向量的元素增减操作。import java .util.Vector;import java.util. Enumeration;public class ConcreteSubject implements Subjectpublic void attach(Observer observer)observersVector .addElement(observer);public void detach(Observer observer)observersVector.removeElement(observer);public void notifyObservers()Enumeration enumeration = observers();while (enumeration. hasMoreElements()(Observer)enumeration.nextElement().update(); public Enumeration observers。 return ( (Vector) observersVector.clone().elements(); p
《观察者模式》由会员M****1分享,可在线阅读,更多相关《观察者模式》请在金锄头文库上搜索。
大学生的社团活动总结标准范本.doc
树立正确政绩观研讨材料_0
谐波对于电网的危害非常大
2023年福建省泉州市安溪县剑斗镇社区工作人员考试模拟试题及答案
用经济学智慧解读中国笔记题目(共26页)
智能交通管控中心基础建设
南开大学21秋《公司理财》综合测试题库答案参考98
校园读书节活动工作方案
2023年转载——英语调研测试参考答案及评分标准[推荐]
暴风雨小学作文
2023年广电系统工作总结与底初级经济师个人工作总结合集
《计算机电路》课程教学总结报告
一年级数学上册优秀公开课教学设计10的认识
煤矿井下从业人员安全知识读本
河南省焦作市许衡实验学校七年级英语上学期第一次月考试题无答案人教新目标版
16母亲节祝福寄语-母亲节贺语
电炉炼钢厂龙门吊安全操作规程
土地信息库项目信息收集及跟踪表
安徽省中学生生物学竞赛预赛试卷及答案
幼儿同伴冲突及其解决策略
2023-06-06 13页
2023-03-02 13页
2022-09-27 2页
2023-09-21 5页
2023-02-11 3页
2023-10-23 3页
2024-01-21 5页
2022-11-20 2页
2022-08-14 7页
2023-01-27 5页