import java.util.Observable;
import java.util.Observer;
//观察者
class Person implements Observer {
public void update(Observable o,Object arg) { //关注点,新内容
if(o instanceof House) { //监测到变化是House类发生时
if(arg instanceof Double) { //(Double)double
System.out.println("变化:" + arg); //输出变化值
}
}
}
}
//被观察者
class House extends Observable {
private double price;
public House(double price) {
this.price = price;
}
public void setPrice(double price) {
if(this.price > price) { //贬值
super.setChanged(); //标记为已更改, hasChanged方法由false变为true
super.notifyObservers(price); //通知其所有观察者,并调用 clearChanged方法来指示该对象不再改变
}
this.price = price;
}
}
public class TestDemo {
public static void main(String[] args) throws Exception {
//观察者和被观察者
Person per = new Person();
House house = new House(988); //原票价
// 告知被观察者所有观察者名单
house.addObserver(per);
house.setPrice(98); //新票价
}
}
import java.util.Observer;
//观察者
class Person implements Observer {
public void update(Observable o,Object arg) { //关注点,新内容
if(o instanceof House) { //监测到变化是House类发生时
if(arg instanceof Double) { //(Double)double
System.out.println("变化:" + arg); //输出变化值
}
}
}
}
//被观察者
class House extends Observable {
private double price;
public House(double price) {
this.price = price;
}
public void setPrice(double price) {
if(this.price > price) { //贬值
super.setChanged(); //标记为已更改, hasChanged方法由false变为true
super.notifyObservers(price); //通知其所有观察者,并调用 clearChanged方法来指示该对象不再改变
}
this.price = price;
}
}
public class TestDemo {
public static void main(String[] args) throws Exception {
//观察者和被观察者
Person per = new Person();
House house = new House(988); //原票价
// 告知被观察者所有观察者名单
house.addObserver(per);
house.setPrice(98); //新票价
}
}