observer设计模式
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")); }}