- 15
- 0
- 约1.81万字
- 约 11页
- 2016-10-06 发布于贵州
- 举报
软件体系结构与计模式 观察者模式
观察者模式(别名:依赖,发布-订阅)
定义对象间的一种一对多的依赖关系,当一个对象的状态发生变化时,所有依赖于它的对象都得到通知并被自动更新。
Observer Pattern(Another Name: Dependents, Publish-Subscribe)
Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically..
一、概述
在许多设计中,经常涉及到多个对象都对一个特殊对象中的数据变化感兴趣,而且这多个对象都希望跟踪那个特殊对象中的数据变化。
二、 模式的结构与使用
观察者模式的结构中包括四种角色:
主题(Subject)
观察者(Observer)
具体主题(ConcreteSubject)
具体观察者(ConcreteObserver)
模式的结构的描述与使用
有一个大学毕业生和一个归国留者都希望能及时知道“求职中心”最新的职业需求信息。
1.主题 : Subject.java
public interface Subject{
public void addObserver(Observer o);
public void deleteObserver(Observer o);
public void notifyObservers();
}
主题接口规定了具体主题需要实现的添加、删除观察者以及通知观察者更新数据的方法
2.观察者 : Obsever.java
public interface Observer{
public void hearTelephone(String heardMess);
}
观察者接口规定了具体观察者用来更新数据的方法。
3.具体主题 SeekJobCenter.java_1
public class SeekJobCenter implements Subject{
String mess;
boolean changed;
ArrayListObserver personList;
SeekJobCenter(){
personList=new ArrayListObserver();
mess=;
changed=false;
}
public void addObserver(Observer o){
if(!(personList.contains(o)))
personList.add(o); }
public void deleteObserver(Observer o){
if(personList.contains(o))
personList.remove(o);
}
3.具体主题 SeekJobCenter.java_2
public void notifyObservers(){
if(changed){
for(int i=0;ipersonList.size();i++){
Observer observer=personList.get(i);
observer.hearTelephone(mess); }
changed=false;
}
}
public void giveNewMess(String str){
if(str.equals(mess))
changed=false;
else{
mess=str;
changed=true;
}
}
}
具体主题通过实现notifyObservers()方法来通知具体观察者,实现的方式是遍历具体主题中用来存放观察者引用的集合,并让集合中的每个具体观察者执行观察者接口规定更新数据的方法。
4.具体观察者_1 UniversityStudent.java
public class UniverStudent implements Observer{
Subject subject;
File myFile;
Univer
您可能关注的文档
- 跨境电商干货:何打造灯具行业SKU.docx
- 跨境贸易人民币算 中英文.doc
- 跨境贸易人民币算出口收款说明.doc
- 跨境贸易人民币算试点.doc
- 跨境贸易人民币算试点管理办法实施细则.doc
- 跨越式发展的山商业职业技术学院.doc
- 跨部门沟通技巧时代光华答案.doc
- 路侧中未接通处经验总结报告.doc
- 路基试验段作业导书.doc
- 路桥施工技术管制度.doc
- 人教版九年级英语Unit 4曾害怕课件3a-4c.pdf
- 雅思口语考题回顾:朗阁海外考试研究中心2019年10月10日Part 1考题总结.pdf
- 2026届高三地理一轮复习课件小专题河流袭夺.pptx
- 【名师原创】复习专题5 三角函数 作者:合肥市第八中学 蒲荣飞名师工作室.docx
- 高中数学一轮复习 微专题2 抽象函数.docx
- 高中数学——复习专题4 空间向量与立体几何.docx
- 高中数学一轮复习 微专题3 空间几何体中的截面、轨迹问题.docx
- 高中数学一轮复习 微专题4 空间几何体的最值、范围问题.docx
- 导流洞施工质量通病防治手册.docx
- 江苏省徐州市第一中学、徐市第三中学等五校2026届高三上学期12月月考历史试题含答案.docx
原创力文档

文档评论(0)