- 浏览: 28026 次
最新评论
Uml图:
主题:
public interface Subject { public void addObserver(Observer o); public void deleteObserver(Observer o); public void notifuObserver(); }
观察者:
public interface Observer { public void hearTelephone(String headMess); }
具体主题:
import java.util.ArrayList; public class SeekJobCenter implements Subject { String mess; boolean changed; ArrayList<Object> personList; SeekJobCenter(){ personList =new ArrayList<Object>(); mess=""; changed=false; } @Override public void addObserver(Observer o) { if (!personList.contains(o)) { personList.add(o); } } @Override public void deleteObserver(Observer o) { if (personList.contains(o)) { personList.remove(o); } } @Override public void notifuObserver() { if (changed) { for (int i = 0; i < personList.size(); i++) { //Observer observer =personList.get(i); //observer.hearTelephone(mess); Observer 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; } } }
具体观察者:
UniversityStudent.java import java.io.File; import java.io.IOException; import java.io.RandomAccessFile; public class UniversityStudent implements Observer { Subject subject; File myFile; UniversityStudent(Subject subject,String fileName){ this.subject=subject; subject.addObserver(this); myFile =new File(fileName); } @Override public void hearTelephone(String headMess) { try { RandomAccessFile out =new RandomAccessFile(myFile, "rw"); out.seek(out.length()); byte[] b =headMess.getBytes(); out.write(b); System.out.print("我是一个大学生,"); System.out.println("我想文件"+myFile.getName()+"写入如下内容"); System.out.println(headMess); } catch (IOException e) { System.out.println(e.toString()); } } } HaiGui.java import java.io.File; import java.io.IOException; import java.io.RandomAccessFile; public class HaiGui implements Observer { Subject subject; File myFile; HaiGui(Subject subject,String fileName) { this.subject=subject; subject.addObserver(this); myFile =new File(fileName); } @Override public void hearTelephone(String headMess) { try { boolean boo =headMess.contains("java程序员")||headMess.contains("软件"); if (boo) { RandomAccessFile out=new RandomAccessFile(myFile, "rw"); out.seek(out.length()); byte[] b =headMess.getBytes(); out.write(b); System.out.print("我是一个海归"); System.out.println("我向文件"+myFile.getName()+"写入如下内容:"); System.out.println(headMess); } else { System.out.println("我是海归,这次的信息中没有我需要的信息"); } } catch (IOException e) { System.out.println(e.toString()); } } }
模式使用:
public class Application { public static void main(String[] args) { // TODO Auto-generated method stub SeekJobCenter center =new SeekJobCenter();//具体主题center UniversityStudent zhanglinStudent =new UniversityStudent(center, "A.txt");//具体观察者 HaiGui wanghaoGui =new HaiGui(center, "B.txt"); center.giveNewMess("腾辉公司需要10个java程序员"); center.notifuObserver(); } }
发表评论
-
java状态模式
2012-04-19 00:46 1143Uml图: //抽象状态(State) public ... -
java中介者模式
2012-04-19 00:41 1643Uml图: //1.Colleague //Colle ... -
java原型模式
2012-04-19 00:38 1701Uml图: //抽象原型 public interfa ... -
java外观模式
2012-04-19 00:35 2317Uml图: //子系统: //CheckWord.ja ... -
java装饰模式
2012-04-18 20:57 754Uml图: //Bird类: public abs ... -
java生成器模式
2012-04-18 20:45 2399UML图: 产品: PanelProduc ... -
java桥接模式
2012-04-17 14:56 1147Uml图如下: //实现者(Implementor) ... -
java命令模式
2012-04-16 00:06 627Uml图: 接收者: import ja ... -
java工厂方法模式
2012-04-15 22:11 1889抽象产品: public abstract ... -
java单例模式
2012-04-15 22:05 643保证一个类仅有一个实例,并提供一个访问它的全局访问点。 ... -
java抽象工厂模式
2012-04-15 22:01 779Uml图: 抽象产品: public abst ... -
java策略模式
2012-04-15 21:43 706Uml图: 策略: public ...
相关推荐
java观察者模式观察者模式java观察者模式观察者模式java观察者模式观察者模式
Java 观察者模式的浅析 简单地说,观察者模式定义了一个一对多的依赖关系,让一个或多个观察者对象监察一个主题对象。这样一个主题对象在状态上的变化能够通知所有的依赖于此对象的那些观察者对象,使这些观察者...
一个很简单但是明了的java观察者模式的demo。备注几乎每行都加了。
设计模式----观察者模式demo,使用java自带的工具类,实现,后面会上传一个完全自己代码实现的demo
股票价格 观察者模式 股票价格 观察者模式 股票价格 观察者模式 股票价格 观察者模式
开发中常用 设计模式 开发者模式,欢迎大家学习。 博客:http://blog.csdn.net/q610098308/article/details/76143959
java观察者模式的实例代码。从最简单的实例开始,到观察者模式。有什么问题可以加扣扣共同探讨
观察者模式:对象之间多对一依赖的一种设计方案,被依赖的对象为Subject,依赖的对象为Observer,Subject通知Observer变化,这个例子是java内置观察者模式
观察者模式实例,用到java的继承,多态,加深概念理解.
利用气象站监测的例子详细介绍观察者模式的使用方法,具体介绍观察者模式的所适应的场景情况
设计模式的分类,Java代码中使用观察者模式的案例以及文档
在设计一组依赖的对象与它们所依赖的对象之间一致(同步)的交流模型时,观察者模式(Observer Pattern)很有用。它可以使依赖对象的状态与它们所依赖的对象的状态保持同步。这组依赖的对象指的是观察者(Observer)...
用java实现的观察者模式,共需要的人学习,如果有不对的地方也请指出
Java设计模式的观察者模式讲解,可以由浅入深了解观察者模式的应用。
一个以报社、读者为例子的经典观察者模式demo。
Java线程池及观察者模式解决多线程意外死亡重启问题,附件含两个要运行代码!
观察者设计模式,java语言实现,完全自己代码实现,未使用observable和observer
java-观察者模式(Observe)