栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java----观察者模式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java----观察者模式

观察者模式

描述:

  • 观察者模式(也称为发布/订阅模式)提供了避免组件之间紧密耦合的另一种方法,它将观察者和被观察的对象分离开。
  • 在该模式中,一个对象通过添加一个方法(该方法允许另一个对象,即观察者注册自己)使本身变得可观察。
  • 当可观察的对象更改时,它会将消息发送到已注册的观察者。这些观察者收到消息后所执行的操作与可观察的对象无关,这种模式使得对象可以相互对话,而不必了解原因
  • Java语言与C#语言的事件处理机制就是采用的此种设计模式。

类图

interface Subject{
    public void registerObserver(Observer o);//注册观察者
    public void removeObserver(Observer o);//移除观察者
    public void notifyObserver();//通知观察者
}


interface Observer{
    public void update(float temp);//更新天气情况
}


class WhetherDisplay implements Observer{
    private float temperature;
    public WhetherDisplay(Subject subject){
        subject.registerObserver(this);//将自身注入到观察者集合中
    }
    @Override
    public void update(float temp) {
        this.temperature=temp;
        display();
    }
    public void display(){
        System.out.println("【1】天气变化=》 " + temperature);
    }
}


class WhetherDisplay2 implements Observer{
    private float temperature;

    public WhetherDisplay2(Subject subject){
        subject.registerObserver(this);//将自身注入到观察者集合中
    }
    @Override
    public void update(float temp) {
        this.temperature=temp;
        display();
    }
    public void display(){
        System.out.println("【2】天气变化=》 " + temperature);
    }
}


class Whether implements Subject{
    //添加
    private ArrayList observers = new ArrayList<>();
    private float temperature;

    @Override
    public void registerObserver(Observer o) {
        this.observers.add(o);//将接收到的观察者注册到数组中
    }

    @Override
    public void removeObserver(Observer o) {
        this.observers.remove(o);//将观察者从数组中移除
    }

    @Override
    public void notifyObserver() {
        //逐个通知观察者集合中的所有观察者
        for (int i=0;i
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/352127.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号