observer设计模式的java实现
来源:互联网 发布:手机鼠标软件 编辑:程序博客网 时间:2024/04/28 14:12
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
- observer设计模式的java实现
- observer设计模式的java实现
- JAVA设计模式-Observer
- JAVA设计模式-Observer模式
- 观察者设计模式 (observer模式) java实现
- 设计模式:观察者模式(observer) java实现及原理
- Java设计模式之Observer
- 【Java设计模式之Observer】
- java中实现observer模式
- Java 实现观察者(Observer)模式
- Java 实现观察者(Observer)模式
- Java 实现观察者(Observer)模式
- 实现范例的Observer设计模式 事件 委托
- [转]利用 PHP 的 SPL 快速实现 Observer 设计模式
- javascript的设计模式实现07之Observer
- 观察者设计模式(Observable类Observer接口)的实现demo
- 设计模式之Observer模式(C++实现)
- Java设计模式之Observer(观察者)模式
- Unit 1 & 1.1 Customer Relationship Management
- Observer模式的一个例子
- Thinking in java 3RD (Tp0cs翻译版)-->前言
- IP phone日志1
- 2004/10 中国加息对经济的影响
- observer设计模式的java实现
- 用Visual C++.NET实现XML解析
- 用Socket类实现HTTP协议客户端应用
- 页面上常用的几种符号字体
- 个人工作效率挑战
- VS.net水晶报表注册码
- 使用PHP模拟HTTP认证
- 交叉表的实现
- VB中判断数组维数