java观察者模式

/*
 * addObserver()添加一个观察者
 * deleteObserver()删除一个观察者
 * setChanged()被观察者状态发生改变
 * notifyObservers()通知所有观察者状态改变
 */
package com.observable;
import java.util.*;
public class observable {
    public static void main(String []args){
        House h = new House(6000.00f);
        Buyer b1 = new Buyer("小五");
        Buyer b2 = new Buyer("小明");
        Buyer b3 = new Buyer("小面");
        h.addObserver(b1);
        h.addObserver(b2);
        h.addObserver(b3);
        System.out.println(h);          //输出原来的价格
        h.setPrice(6800.00f);           //改变价格,所有观察者都将收到最新价格
        System.out.println(h);          //输出修改后的价格
    }
}
class House extends Observable{
    Float price=null;
    public House(Float price){
        this.price = price;
    }
    public Float getPrice(){
        return this.price;
    }
    public void setPrice(Float price){
        super.setChanged();                 //被观察者的状态发生改变
        super.notifyObservers(price);       //通知所有观察者的状态改变
        this.price = price;
    }
    public String toString(){
        return "房子价格:"+this.price;
    }
}
class Buyer implements Observer{
    String name=null;
    public Buyer(String name){
        this.name = name;
    }
    @Override
    public void update(Observable o, Object arg) {
        //第一个参数o表示被观察者,arg表示修改的内容
        // TODO Auto-generated method stub
        if(arg instanceof Float){
            System.out.println(this.name+"获取到最新房子价格为:"+((Float) arg).floatValue());
        }
    }
}

wKioL1LkxYCQBvl0AAC9wAwD84M520.jpg

你可能感兴趣的:(java,import,观察者,public)