这个模式主要是Observer和Observable
Observable是被观察事物,Observer是观察者。当观察者发现被观察者的一些属性发生变化,则会做出一些反映。
import java.util.Observable;
import java.util.Observer;
public class ObserveTest {
public static void main(String args[]) {
House h = new House(20.0f);
Person p1 = new Person();
Person p2 = new Person();
Person p3 = new Person();
h.addObserver(p1);
h.addObserver(p2);
h.addObserver(p3);
h.setPrice(30.0f);
}
}
class House extends Observable {
private double price;
public House(double price) {
super();
this.price = price;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
super.setChanged();
super.notifyObservers();
}
}
class Person implements Observer {
@Override
public void update(Observable o, Object arg) {
System.out.println(o + "Hello" + arg);
}
}
以上是一个实例,House是一个被观察事物,人是观察者,当房价发生变化时,人就会说“Hello”。
重要函数:
setChanged();标记为已经改变。
notifyObservers();告知观察者发生改变。
addObservers(o);加入观察者