首页 > 其他分享 >观察者模式

观察者模式

时间:2024-03-11 22:14:50浏览次数:30  
标签:temperature void float 观察者 模式 humidity pressure public

 

观察者:
public interface Observer {

    void update(float temperature, float humidity, float pressure);
}

  

主体;

public interface Subject {

    public void registerObserver(Observer observer);

    public void removeObserver(Observer observer);

    public void notifyObserver();


}

  

变更的数据:

public class WeatherData implements Subject{

    private List<Observer> observers;
    private float temperature;
    private float humidity;
    private float pressure;

    public WeatherData() {
        this.observers = new ArrayList<>();
    }

    public void setMeasurements(float temperature,float humidity,float pressure){
        this.temperature = temperature;
        this.humidity = humidity;
        this.pressure = pressure;
        notifyObserver();
    }

    @Override
    public void registerObserver(Observer observer) {
        observers.add(observer);
    }

    @Override
    public void removeObserver(Observer observer) {
        int i = observers.indexOf(observer);
        if (i >= 0){
            observers.remove(observer);
        }
    }
    @Override
    public void notifyObserver() {
        for (Observer o : observers) {
            o.update(temperature,humidity,pressure);
        }
    }


}

  

被观察者1:

public class CurrentConditionsDisplay implements Observer{

    public CurrentConditionsDisplay(Subject weatherData) {
        weatherData.registerObserver(this);
    }

    @Override
    public void update(float temperature, float humidity, float pressure) {
        System.out.println("CurrentConditionsDisplay update:"+temperature+" "+humidity+" "+pressure);
    }
}

  

 

被观察者2:

public class StatisticsDisplay implements Observer{

    /**
     * 订阅天气数据
     * @param weatherData
     */
    public StatisticsDisplay(Subject weatherData){
        weatherData.registerObserver(this);
    }

    public void update(float temp, float humidity, float pressure){
        System.out.println("StatisticsDisplay update:"+temp+" "+humidity+" "+pressure);
    }


}

  

 

标签:temperature,void,float,观察者,模式,humidity,pressure,public
From: https://www.cnblogs.com/yb-ken/p/18067191

相关文章

  • 10_装饰模式
    装饰模式是一种结构型设计模式,它允许我们在不改变现有对象结构的情况下,动态地向对象添加额外的功能。装饰模式有四个主要角色:抽象组件(Component):定义了一个抽象接口,用于被具体组件和具体装饰器实现。具体组件(ConcreteComponent):实现了抽象组件接口,是被装饰的对象。抽象装......
  • 09_组合模式
    组合模式是一种结构型设计模式,它允许我们将对象组合成树状结构,以表示“整体-部分”的层次结构。组合模式使得客户端可以统一地处理单个对象和组合对象,无需区分它们的差异。组合模式有三个主要角色:组件(Component):定义了组合中的对象的公共接口,可以是抽象类或接口,并提供了一些默......
  • 使用@Autowired + Map 实现策略模式
    创建接口publicinterfaceUserService{StringgetName();}创建多个类实现上面的接口实现一importcom.boot.service.UserService;importorg.springframework.stereotype.Service;@Service("zhangsan")publicclassZhangsanUserServiceImplimplementsUserServ......
  • CCE集群VPC网络模式下几种访问场景
    本文分享自华为云社区《【理解云容器网络】5-CCE集群VPC模型容器网络走线介绍》,作者:可以交个朋友。简介鉴于在CCE集群使用VPC网络模型,处理遇到的一些网络问题时,需要熟悉不同场景下数据包的流转过程,才能快速的解决问题。本文主要介绍CCE集群VPC网络模式下各种访问场景介绍。VPC......
  • Go 中的监视器模式与配置热更新
    Go中的监视器模式与配置热更新原创 波罗学 码途漫漫 2024-03-1108:03 上海 听全文上篇介绍GO的GUI库Fyne时,提到Fyne的数据绑定用到了监听器模式。本文就展开说下我对Go中监听器模式的理解和应用吧。监听器模式简介监听器模式,或称观察者模式,它主要涉及......
  • 08_桥接模式
    桥接模式是一种结构型设计模式,它将抽象和实现分离,使它们可以独立地变化。桥接模式通过将实现细节从抽象中分离出来,使得抽象和实现可以独立地进行扩展和修改。桥接模式有四个主要角色:抽象类(Abstraction):定义了抽象类的接口,并包含一个对实现类的引用。实现类接口(Implementor):定......
  • 07_适配器模式
    适配器模式是一种结构型设计模式,它通过将一个类的接口转换成客户端所期望的另一个接口,使得原本由于接口不兼容而不能一起工作的类能够协同工作。适配器模式有三个主要角色:目标接口(Target):定义了客户端所期望的接口。源接口(Adaptee):需要被适配的类或接口。适配器(Adapter):将......
  • STM32的3种启动模式
    STM32的3种启动模式STM32启动模式介绍各种模式介绍boot0=0Flashmemory启动方式启动地址:0x08000000是STM32内置的Flash,一般我们使用JTAG或者SWD模式下载程序时,就是下载到这个里面,重启后也直接从这启动程序。基本上都是采用这种模式。boot0=1;boot1=0System......
  • Mac上安装主从模式&哨兵模式Redis(5.0.9)
    1、服务节点说明Master节点ip和端口为:127.0.0.1:6380Slave节点ip和端口为:127.0.0.1:6381;127.0.0.1:6382哨兵节点说明:127.0.0.1:26380;127.0.0.1:26381;127.0.0.1:26382Redis哨兵集群拓扑图.png2、配置主从模式2.1、redis修改配置2.1.1、Master的redis.conf设置哪些IP......
  • 神州笔记本 win11 节能模式 供电不足 自动关机
    刚刚买了一个神州笔记本没几天,用着用着就出现问题了。本人使用电脑有个极为不好的习惯,那就是会一次性打开特别多的应用,然后不关,一直留着,这个习惯虽然不好但也是一直没有啥问题的,不过最近换了个新的笔记本就出现了问题。神州笔记本开启省电模式:之所以开这个模式其实并不是为......