什么是Java中的观察者模式?

这篇具有很好参考价值的文章主要介绍了什么是Java中的观察者模式?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Java中的观察者模式是一种设计模式,它允许一个对象在状态发生改变时通知它的所有观察者。这种模式在许多情况下都非常有用,例如在用户界面中,当用户与界面交互时,可能需要通知其他对象。

下面是一个简单的Java代码示例,演示了观察者模式的基本用法:

public interface Observer {
    void update();
}

public interface Subject {
    void registerObserver(Observer observer);
    void removeObserver(Observer observer);
    void notifyObservers();
}

public class ConcreteSubject implements Subject {
    private List<Observer> observers = new ArrayList<>();
    
    @Override
    public void registerObserver(Observer observer) {
        observers.add(observer);
    }
    
    @Override
    public void removeObserver(Observer observer) {
        observers.remove(observer);
    }
    
    @Override
    public void notifyObservers() {
        for (Observer observer : observers) {
            observer.update();
        }
    }
}

public class ConcreteObserver implements Observer {
    private ConcreteSubject subject;
    
    @Override
    public void update() {
        subject.notifyObservers();
    }
}

在这个例子中,我们定义了两个接口:Observer和Subject。Observer表示观察者,它有一个update()方法,当观察者需要被通知时,它会调用这个方法。Subject表示被观察者,它有一个registerObserver()方法用于添加观察者,一个removeObserver()方法用于删除观察者,以及一个notifyObservers()方法用于通知所有观察者。我们还定义了一个ConcreteSubject类来实现Subject接口,并实现了一个ConcreteObserver类来实现Observer接口。最后,我们在ConcreteSubject中实现了通知所有观察者的方法。


下面又是一个简单的Java代码示例:

// 定义一个观察者接口
interface Observer {
    void update();
}

// 定义一个被观察者类
class Subject {
    private List<Observer> observers = new ArrayList<>();

    public void attach(Observer observer) {
        observers.add(observer);
    }

    public void detach(Observer observer) {
        observers.remove(observer);
    }

    public void notifyObservers() {
        for (Observer observer : observers) {
            observer.update();
        }
    }
}

// 定义一个实现观察者接口的类
class ConcreteObserver1 implements Observer {
    @Override
    public void update() {
        System.out.println("ConcreteObserver1 updated");
    }
}

class ConcreteObserver2 implements Observer {
    @Override
    public void update() {
        System.out.println("ConcreteObserver2 updated");
    }
}

// 测试代码
public class ObserverPatternDemo {
    public static void main(String[] args) {
        Subject subject = new Subject();
        ConcreteObserver1 observer1 = new ConcreteObserver1();
        ConcreteObserver2 observer2 = new ConcreteObserver2();
        subject.attach(observer1);
        subject.attach(observer2);
        subject.notifyObservers(); // 输出:ConcreteObserver1 updated和ConcreteObserver2 updated
        subject.detach(observer1); // 输出:ConcreteObserver2 updated,因为observer1已经被移除掉了
        subject.notifyObservers(); // 输出:ConcreteObserver2 updated,因为只有observer2被通知了,而observer1已经被移除掉了
    }
}

在这个示例中,我们定义了一个Subject类作为被观察者,它维护了一个观察者列表,并实现了attach和detach方法来添加和移除观察者。我们还定义了一个Observer接口,它包含了一个update方法,用于通知观察者状态已经改变。最后,我们定义了两个实现Observer接口的类ConcreteObserver1和ConcreteObserver2,它们分别实现了update方法。在测试代码中,我们创建了一个Subject对象,并添加了两个观察者ConcreteObserver1和ConcreteObserver2。然后我们调用Subject的notifyObservers方法来通知所有观察者状态已经改变,并打印出观察者的更新信息。接着我们移除了观察者ConcreteObserver1,再次调用notifyObservers方法时,只有ConcreteObserver2被通知了。文章来源地址https://www.toymoban.com/news/detail-646811.html

到了这里,关于什么是Java中的观察者模式?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java设计模式-观察者模式

    观察者模式(Observer)是软件设计中的一种行为模式。 它定义了对象之间的一对多关系,其中如果一个对象改变了状态,所有依赖它的对象都会自动被通知并更新。 这种模式包含了两种主要的角色,即被观察者(Subject)和观察者(Observer)。 被观察者维护了一个观察者列表

    2024年02月15日
    浏览(37)
  • Java观察者设计模式

    观察者模式,定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。在Java中,观察者模式通常由两个接口组成:Subject和Observer。Subject是被观察的对象,Observer是观察者。Subject接口定义了一系列方法,用于添加、删

    2024年02月16日
    浏览(37)
  • java设计模式(二十)观察者模式

    观察者模式 又叫发布订阅模式(Publish/Subscribe),它定义了一种一对多的关系,让多个观察者对象同时监听某一个主题对象,这个主题对象的状态发生变化时就会通知所有的观察者对象,使得它们能够自动更新自己。 1.抽象目标类(Subject) :它用一个列表记录当前目标对象

    2024年02月08日
    浏览(43)
  • java设计模式学习之【观察者模式】

    想象你在一个在线拍卖会上竞标一件珍贵的艺术品。每当有人出价更高,系统都会立即通知你。这个实时更新机制使你可以做出快速反应。这种模式,在软件开发中称为观察者模式,是一种广泛应用于实现事件驱动系统的设计模式。 观察者模式(Observer Pattern)是一种行为型

    2024年02月03日
    浏览(41)
  • Go和Java实现观察者模式

    在监控系统中,我们需要采集监控指标的信息,假设当采集的指标信息超过阈值时我们需要对该监控指标持久化到 数据库中并且进行告警。 本文通过指标采集持久化和告警来说明观察者模式的使用,使用Go语言和Java语言实现。 观察者模式是一种行为型设计模式,它定义了一

    2024年02月16日
    浏览(36)
  • java设计模式-观察者模式(jdk内置)

    上一篇我们学习了 观察者模式。 观察者和被观察者接口都是我们自己定义的,整个设计模式我们从无到有都是自己设计的,其实,java已经内置了这个设计模式,我们只需要定义实现类即可。 下面我们不多说明,直接示例代码,例子依然同 观察者模式篇章,建议先去看看。

    2024年02月15日
    浏览(37)
  • Java设计模式-观察者模式-SpringBoot实现

    项目:https://gitee.com/KakarottoChen/blog-code.git 的:JavaSpringListener Java观察者模式是一种设计模式,用于实现对象之间的一对多依赖关系。在观察者模式中,当一个对象的状态发生变化时,它的所有依赖对象(观察者)都会自动收到通知并进行相应的更新。 观察者模式由以下几个核

    2024年02月08日
    浏览(43)
  • Java设计模式系列--观察者模式写法2:JDK

    原文网址:Java设计模式系列--观察者模式写法2:JDK_IT利刃出鞘的博客-CSDN博客 说明 本文用示例介绍观察者模式的一种写法:JDK。 JDK的观察者模式简介 在 Java 中,java.util.Observable 类和 java.util.Observer 接口定义了观察者模式,只要实现这两个接口就可以编写观察者模式。 1. Ob

    2024年02月13日
    浏览(39)
  • 【C++ 观察者模式 思想理解】C++中的观察者模式:松耦合设计与动态交互的艺术,合理使用智能指针观察者

    在进入技术细节之前,理解观察者模式(Observer Pattern)的基本概念和它在现代编程中的重要性是至关重要的。 观察者模式是一种设计模式,它定义了对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。在C++中,这个

    2024年01月24日
    浏览(56)
  • 什么是观察者设计模式?

    观察者模式的主要角色包括: 主题(Subject): 也称为被观察者或可观察对象。它维护了一系列观察者对象,并提供方法用于注册、删除和通知观察者。当主题的状态发生改变时,它会通知所有注册的观察者。 观察者(Observer): 观察主题的对象。观察者定义了一个更新方法

    2024年04月17日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包