观察者设计模式( Observable类Observer接口)

本文介绍了一个基于Java的观察者模式示例,通过具体代码演示了如何利用`Observable`类和`Observer`接口来实现房价变动通知机制。购房者作为观察者会接收到房价更新的消息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果要想实现观察者模式,则必须依靠java.util包中提供的Observable类和Observer接口。

import java.util.* ; 
class House extends Observable{ // 表示房子可以被观察 
    private float price ;// 价钱 
    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 HousePriceObserver implements Observer{ 
    private String name ; 
    public HousePriceObserver(String name){ // 设置每一个购房者的名字 
        this.name = name ; 
    } 
    public void update(Observable o,Object arg){ 
        if(arg instanceof Float){ 
            System.out.print(this.name + "观察到价格更改为:") ; 
            System.out.println(((Float)arg).floatValue()) ; 
        } 
    } 
}; 
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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值