软考设计模式之观察者模式

本文通过气象站的例子深入解析观察者模式,展示了如何在Java中实现这一设计模式。WeatherData作为被观察者,CurrentDisplay和StatisticsDisplay作为观察者,通过注册和通知机制实现数据的实时更新,体现了观察者模式的松耦合和灵活性。
摘要由CSDN通过智能技术生成

          headfirst书中举了个气象站的例子用来讲解观察者模式。

          气象站包括物理装置检测数据,WeatherData对象获取数据,布告板公布数据。WeatherData就是个被观察者,可以定义多个观察者(布告板)来获取被观察者的数据。观察者模式可以使得依赖于某一对象的依赖者会根据该对象状态改变而自动更新。观察者富有弹性,可以添加可以删除。观察者和被观察者之间也是松耦合,因为被观察者只知道观察者实现了Observer接口,不了解具体实现该接口的类有哪些。

         类图如下:

         

建立3个接口:

Subject:

[java]  view plain copy
  1. public interface Subject {  
  2.   
  3.     public void registerObserver(Observer o);  //注册观察者
  4.     public void removeObserver(Observer o);    //删除观察者
  5.     public void notifyObserver();              //发布更新
  6. }  

Observer:

[java]  view plain copy
  1. public interface Observer {  
  2.    public void update(float temp,float humidity,float pressure);  //定义了update方法
  3. }  

DisplayElement:

[java]  view plain copy
  1. public interface DisplayElement {  
  2.     public void display();              
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值