浅谈Java中的观察者模式

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

观察者模式是软件开发中常用的一种设计模式,它通过定义一对多的依赖关系,使得一个对象(主题)的状态变化可以通知多个其他对象(观察者)。

这种模式的优点是解耦和增加扩展性,用于实现对象之间的松耦合通信。

如果要自己编码实现,我们通常定义一个主题接口(Subject)和一个观察者接口(Observer)。主题接口中包含注册观察者、移除观察者和通知观察者的方法,而观察者接口中则定义了更新状态的方法。具体的主题类和观察者类实现这些接口,并进行相应的业务逻辑实现。

考虑到实现简单点,我们假定有一个广播类,这个广播类实际上就是一个主题Subject,有多个听众收听这个广播,这里每个听众就是一个观察者Observer

定义一个主题Subject的接口类

/**
 * 主题,被观察者
 */
public interface Subject {

  /**
   * 添加观察者
   */
  void addObserver(Observer observer);

  /**
   * 移除观察者
   */
  void removeObserver(Observer observer);

  /**
   * 通知观察者
   */
  void notifyObserver(String message);
}

定义一个观察者Observer的接口类

/**
 * 观察者
 */
public interface Observer {

  void recieve(String message);

}

接下来,就是定义一个广播的类,用来实现主题接口 

/**
 * 广播,负责向听众广播消息
 */
public class Broadcast implements Subject{

  private final List<Observer> observerList = new ArrayList<>();

  @Override
  public void addObserver(Observer observer) {
    observerList.add(observer);
  }

  @Override
  public void removeObserver(Observer observer) {
    observerList.remove(observer);
  }

  @Override
  public void notifyObserver(String message) {
    for (Observer observer : observerList) {
      observer.recieve(message);
    }
  }
}

再定义一个听众类,用来实现观察者接口

public class Audience implements Observer {

  private final String name;

  public Audience(String name) {
    this.name = name;
  }

  @Override
  public void recieve(String message) {
    System.out.println(name + " received message: " + message);
  }
}

 写一个测试类来测试结果

public class Test {

  public static void main(String[] args) {
    Broadcast broadcast = new Broadcast();

    Audience audience1 = new Audience("哈尔滨听众");
    Audience audience2 = new Audience("大庆听众");

    broadcast.addObserver(audience1);
    broadcast.addObserver(audience2);

    broadcast.notifyObserver("中央电视台黑龙江电视台");
    broadcast.notifyObserver("黑龙江电视台中央电视台");

    broadcast.removeObserver(audience2);

    broadcast.notifyObserver("大庆听众关了广播");
  }

}

结果打印如下 

浅谈Java中的观察者模式,观察者模式

解释一下,广播了两拨消息,2名听众都收到了这两拨消息。后面移除了一个听众,广播了第三波消息,这时,只有剩下的那个听众收到了广播消息文章来源地址https://www.toymoban.com/news/detail-671531.html

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

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

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

相关文章

  • Java 设计模式——观察者模式

    观察者模式 (Observer Pattern) 是一种行为型设计模式,又被称为发布-订阅 (Publish/Subscribe) 模式, 它定义了对象之间的一种一对多的依赖关系,使得当一个对象的状态发生变化时,所有依赖于它的对象都会自动收到通知并更新 。 在观察者模式中有如下角色: Subject:观察对象 ,

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    2024年02月13日
    浏览(39)
  • 【观察者设计模式详解】C/Java/JS/Go/Python/TS不同语言实现

    观察者模式(Observer Pattern)是一种行为型模式。它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 观察者模式使用三个类Subject、Observer和Client。Subject对象带有绑定观察者到Client对象和从Client对象解绑观察

    2023年04月21日
    浏览(82)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包