observer设计模式的java实现
2009-08-04 10:27
435 查看
observer模式定义对象间的一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新。JDK里提供的observer设计模式的实现由java.util.Observable类和java.util.Observer接口组成。从名字上可以清楚的看出两者在Observer 设计模式中分别扮演的角色:Observer是观察者角色,Observable是被观察目标(subject)角色。
下面给出一个代码示例:
package kellerdu.demo;
import java.util.*;
/**
* <p>
* 使用Observer模式的例子。
* 自己的手机号码更改后,自己的朋友自动得到通知。
* </p>
*
* @author not attributable
* @version 1.0
*/
public class ObserverDesignPattern extends Observable {
public ObserverDesignPattern() {
super();
//有两个朋友
addFriend(new Friend("Tom"));
addFriend(new Friend("Jerry"));
}
public void addFriend(Friend n){
super.addObserver(n);
}
/**
* 手机号码改变
* @param l long
*/
public void modifyPhoneNumber(final long l){
/*
*表明状态已经改变,不调用不会通知观察者
*/
setChanged();
//通知其他人自己的号码改变
notifyObservers(new Long(l));
}
class Friend implements Observer{
private String name;
/**
* @param name 朋友的姓名
*/
public Friend(String name) {
this.name=name;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void update(Observable o, Object arg) {
if(arg instanceof Long){
System.out.println(name+"已经知道你的手机号码改为:"+arg);
}
}
}
public static void main(String[] args) {
ObserverDesignPattern op = new ObserverDesignPattern();
//更改手机号码
System.out.println("我手机号码更改为13516816888!");
op.modifyPhoneNumber(Long.parseLong("13516816888"));
}
}
程序运行结果:
我手机号码更改为13516816888!
Jerry已经知道你的手机号码改为:13516816888
Tom已经知道你的手机号码改为:13516816888
下面给出一个代码示例:
package kellerdu.demo;
import java.util.*;
/**
* <p>
* 使用Observer模式的例子。
* 自己的手机号码更改后,自己的朋友自动得到通知。
* </p>
*
* @author not attributable
* @version 1.0
*/
public class ObserverDesignPattern extends Observable {
public ObserverDesignPattern() {
super();
//有两个朋友
addFriend(new Friend("Tom"));
addFriend(new Friend("Jerry"));
}
public void addFriend(Friend n){
super.addObserver(n);
}
/**
* 手机号码改变
* @param l long
*/
public void modifyPhoneNumber(final long l){
/*
*表明状态已经改变,不调用不会通知观察者
*/
setChanged();
//通知其他人自己的号码改变
notifyObservers(new Long(l));
}
class Friend implements Observer{
private String name;
/**
* @param name 朋友的姓名
*/
public Friend(String name) {
this.name=name;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void update(Observable o, Object arg) {
if(arg instanceof Long){
System.out.println(name+"已经知道你的手机号码改为:"+arg);
}
}
}
public static void main(String[] args) {
ObserverDesignPattern op = new ObserverDesignPattern();
//更改手机号码
System.out.println("我手机号码更改为13516816888!");
op.modifyPhoneNumber(Long.parseLong("13516816888"));
}
}
程序运行结果:
我手机号码更改为13516816888!
Jerry已经知道你的手机号码改为:13516816888
Tom已经知道你的手机号码改为:13516816888
相关文章推荐
- 设计模式(Design Pattern) - 行为型模式(Behavioral Pattern) - 观察者模式(Observer) - Java实现
- observer设计模式的java实现
- 设计模式:观察者模式(observer) java实现及原理
- 设计模式Java实现(三)
- 【设计模式】观察者模式(observer)c#/python实现
- Java设计模式菜鸟系列(十八)责任链模式建模与实现
- Java设计模式—观察者模式(Observer pattern)
- 设计模式学习笔记之策略模式(Java实现)
- Java设计模式菜鸟系列(二十一)享元模式建模与实现
- Java设计模式--观察者模式【Observer Pattern】
- 学习:java设计模式—Observer模式
- 我所理解的设计模式(C++实现)——观察者模式(Observer Pattern)
- java-设计模式-创建模式-观察者模式observer
- 设计模式之桥接模式+适配器模式Java实现
- 单例设计模式的N中Java实现方法
- Java设计模式——代理模式实现及原理
- 设计模式之第11章-建造者模式(Java实现)
- 【设计模式】设计模式C++编程实现之观察者模式(ObserverPattern)
- java 实现设计模式之单例模式(饱汉模式和饿汉模式)
- 设计模式1--工厂模式--Java实现