一.需求: ;
二.實現代碼:
(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