一.需求: ;
二.实现代码:
(1):
package org.lxh.demo.obserdemo;
import java.util.Observable;
import java.util.Observer;
public class House extends Observable {
private float price;
public House(float price){
this.price = price;
}
public float getPrice() {
return price;
}
public void setPrice(float price) {
super.setChanged();
super.notifyObservers(price);
this.price = price;
}
public String toString(){
return "房子价格"+this.price;
}
}
class HousePriceObserver implements Observer{
private String name;
public HousePriceObserver(String name){
this.name = name;
}
@Override
public void update(Observable o, Object arg) {
if(arg instanceof Float){
System.out.print(this.name+"观察到价格更改为:");
System.out.println(((Float)arg).floatValue());
}
}
}
(2):
package org.lxh.demo.obserdemo;
public class ObserDemo01 {
public static void main(String[] args){
House h = new House(1000000);
HousePriceObserver hpo1 = new HousePriceObserver("购房者者A");
HousePriceObserver hpo2 = new HousePriceObserver("购房者者B");
HousePriceObserver hpo3= new HousePriceObserver("购房者者C");
h.addObserver(hpo1);
h.addObserver(hpo2);
h.addObserver(hpo3);
System.out.println(h);
h.setPrice(666666);
System.out.println(h);
}
}
三.控制台打印:
房子价格1000000.0
购房者者C观察到价格更改为:666666.0
购房者者B观察到价格更改为:666666.0
购房者者A观察到价格更改为:666666.0
房子价格666666.0