用java代码实现观察者模式
2015-11-17 22:29
549 查看
/*
用java代码实现观察者模式,
前台负责观察老板在办公室还是离开并通知大家,
用观察者模式实现这一过程,请实现Guard类。
使最终输出结果为:
“老板在办公室”
“前台通知大家:老板离开了”
“前台通知大家:老板回来了”
*/
//被观察的对象。
import java.util.Observable;
class Boss extends Observable {
private String name;
private String state;
public Boss(String name, String state) {
this.name = name;
this.state = state;
}
public String getName() {
return name;
}
public String getState() {
this.notifyObservers(state);
System.out.println(getName() + state);
return state;
}
public void setState(String state) {
this.state = state;
this.setChanged();
this.notifyObservers(state);
}
}
//观察者
package StaticHao;
import java.util.Observable;
import java.util.Observer;
class Guard implements Observer{
//观察者的状态
private String person;
public Guard(String person){
this.person=person;
}
@Override
public void update(Observable o, Object arg) {
// TODO 自动生成的方法存根
String state=arg.toString();
System.out.println(person+"通知大家:老板"+state);
}
}
//测试类
public class ObserverTest {
public static void main(String[] args) {
Boss Boss = new Boss("老板", "在办公室");
Guard guard = new Guard("前台");
Boss.addObserver(guard);
Boss.getState();
Boss.setState("离开了");
Boss.setState("回来了");
}
}
用java代码实现观察者模式,
前台负责观察老板在办公室还是离开并通知大家,
用观察者模式实现这一过程,请实现Guard类。
使最终输出结果为:
“老板在办公室”
“前台通知大家:老板离开了”
“前台通知大家:老板回来了”
*/
//被观察的对象。
import java.util.Observable;
class Boss extends Observable {
private String name;
private String state;
public Boss(String name, String state) {
this.name = name;
this.state = state;
}
public String getName() {
return name;
}
public String getState() {
this.notifyObservers(state);
System.out.println(getName() + state);
return state;
}
public void setState(String state) {
this.state = state;
this.setChanged();
this.notifyObservers(state);
}
}
//观察者
package StaticHao;
import java.util.Observable;
import java.util.Observer;
class Guard implements Observer{
//观察者的状态
private String person;
public Guard(String person){
this.person=person;
}
@Override
public void update(Observable o, Object arg) {
// TODO 自动生成的方法存根
String state=arg.toString();
System.out.println(person+"通知大家:老板"+state);
}
}
//测试类
public class ObserverTest {
public static void main(String[] args) {
Boss Boss = new Boss("老板", "在办公室");
Guard guard = new Guard("前台");
Boss.addObserver(guard);
Boss.getState();
Boss.setState("离开了");
Boss.setState("回来了");
}
}
相关文章推荐
- java 解析properties文件的两种方法
- 对java servlet 单例模式的理解
- Java other
- Regular Expression Matching in Java
- 数组
- Java dbf文件写入远程服务器
- java_25-26
- JAVA 中BIO,NIO,AIO的理解
- think in java 第六章 类再生
- Java 线程池的作用
- Java之路--2015年11月17日
- 书上说Java中方法要用类名调用,我发现
- 关于Java代码中一个方法代码超出65535字节详解
- Java命名规则
- Java反射机制浅析
- Java反射机制浅析
- Java实用手册
- Myeclipse导入项目报错
- Elasticsearch[2.0] ☞ Java Client API ☞ Percolate API
- Java垃圾回收机制