观 察 者 模 式 定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。
下面是House.java的代码:
package com.flyingh.observable;
import java.util.Observable;
public class House extends Observable {
private float price;
public House() {
super();
}
public House(float price) {
super();
this.price = price;
}
public float getPrice() {
return price;
}
public void setPrice(float price) {
this.price = price;
setChanged();
notifyObservers(price);
}
}
下面是观察者ZhangSan.java的代码:
package com.flyingh.observer;
import java.util.Observable;
import java.util.Observer;
public class ZhangSan implements Observer {
private Observable house;
public ZhangSan(Observable house) {
super();
this.house = house;
house.addObserver(this);
}
public Observable getHouse() {
return house;
}
public void setHouse(Observable house) {
this.house = house;
}
@Override
public void update(Observable o, Object arg) {
// TODO Auto-generated method stub
System.out.println("zhangsan:" + arg);
}
}
下面是观察者LiSi.java的代码:
package com.flyingh.observer;
import java.util.Observable;
import java.util.Observer;
public class LiSi implements Observer {
private Observable house;
public LiSi(Observable house) {
super();
this.house = house;
house.addObserver(this);
}
public Observable getHouse() {
return house;
}
public void setHouse(Observable house) {
this.house = house;
}
@Override
public void update(Observable o, Object arg) {
// TODO Auto-generated method stub
System.out.println("lisi:" + arg);
}
}
下面是观察者WangWu.java的代码:
package com.flyingh.observer;
import java.util.Observable;
import java.util.Observer;
public class WangWu implements Observer {
private Observable house;
public WangWu(Observable house) {
super();
this.house = house;
house.addObserver(this);
}
public Observable getHouse() {
return house;
}
public void setHouse(Observable house) {
this.house = house;
}
@Override
public void update(Observable o, Object arg) {
// TODO Auto-generated method stub
System.out.println("wangwu:" + arg);
}
}
下面是Client.java的代码:
package com.flyingh.client;
import com.flyingh.observable.House;
import com.flyingh.observer.LiSi;
import com.flyingh.observer.WangWu;
import com.flyingh.observer.ZhangSan;
public class Client {
public static void main(String[] args) {
House house = new House(1500);
new ZhangSan(house);
new LiSi(house);
new WangWu(house);
house.setPrice(2000);
}
}
程序运行结果如下:
wangwu:2000.0
lisi:2000.0
zhangsan:2000.0
本文介绍了一个基于Java的观察者模式实现案例。通过House类作为被观察对象,ZhangSan、LiSi和WangWu类作为观察者,演示了一对多的依赖关系。当House的价格发生变化时,所有观察者都将自动更新。
708

被折叠的 条评论
为什么被折叠?



