java学习之路----设计模式----观察者模式

本文介绍Java中的观察者模式,并通过实例演示如何使用Observable类和Observer接口实现房价变动通知的功能。观察者模式允许一个对象(被观察者)在状态发生变化时通知所有依赖于它的对象(观察者)。

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

java中提供了Observale类和Observer接口,使用它们就可以完成观察者模式。。


观察者模式就是:一个状态变化,所有观察这个状态的观察者都知道了。。
          例如:房价,一旦房价变了,所有购房者(观察者)都知道了。。。


public interface Observer {
  
    void update(Observable o, Object arg);
}

这个接口中只有一个方法。。。就是update
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;
          
     }

     @Override
     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 ObservlableDemo {
     
     public static void main(String[] args) {
          House house= new House(1000000);
          
          HousePriceObserver h= new HousePriceObserver("A" );
          
          HousePriceObserver h1= new HousePriceObserver("B" );
          
          HousePriceObserver h2= new HousePriceObserver("C" );
          house.addObserver(h); //加入观察者
          
          house.addObserver(h1);
          
          house.addObserver(h2);
          
          System. out .println(house);
          
          house.setPrice(888888);
          
          System. out .println(house);
          
          
     }

     
}

结果:
价格为1000000.0
C观察到价格的变化为:888888.0
B观察到价格的变化为:888888.0
A观察到价格的变化为:888888.0
价格为888888.0
























评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值