【Java】Observer和Observable实现观察者模式

Simulink仿真模块 - Data Type Conversion Data Type Conversion将输入信号转换为指定的数据类型 在仿真库中的位置为: Simulink / 常用模块 Simulink / Signal Attributes 模型为: 说明 DataTypeConversion模块可将任何 Simulink®数据类型的输入信号转换为您指定的数据类型。 注意 要通过指定模块参数来控制输出数据类型,或者要从下游模块继承数据类型,使用DataTypeConversion模块。要... 阅读详情

今天看到一段代码很有意思,因为以前没有接触到过这两个类,所以简单的学习一下

观察者模式

我的理解就是有观察者和被观察者两个角色,当被观察者执行某些操作被观察者观察到后,观察者也做出相应的操作。

我今天看到的代码是有个被观察者是一个单子,当这个单子的内容被更新的时候,将这个情况通知观察者,观察者是一个rest请求的发送器,观察者就会把这个单子变化的情况推送到其他需要知道单子被修改的地方。刚开始看代码的时候还在想,这个http请求是怎么发送出去的,了解了这个类后就明白了。

类的说明

  • Observer

观察者接口,实现这个接口的都是观察者实现。简单的实现如下:

public class MyObserver implements Observer {

    @Override
    public void update(Observable o, Object arg) {
        //加一个判断,既可以防止强转失败,而且可以避免不是此观察者需要观察的被观察者进行方法
        if (o instanceof MyObservable) {
            //强转获取到被观察者对象
            MyObservable myObservable = (MyObservable) o;
            System.out.println("被观察者改名了:" + myObservable.getName());
        }
    }

}
  • Observable

被观察者类,继承这个类即可:

public class MyObservable extends Observable {

    private String name = "ONE";

    public void change(String name) {
        this.setName(name);
        //标识此对象已经被修改
        this.setChanged();
        //通知所有的观察者,相当于唤醒所有观察者的线程执行观察者的方法
        this.notifyObservers();
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public static void main(String[] args) {
        MyObservable myObservable = new MyObservable();
        myObservable.addObserver(new MyObserver());
        myObservable.change("Jack");
        myObservable.change("Pony");
        myObservable.change("Rookie");
    }
}

main方法结果如下:

被观察者改名了:Jack
被观察者改名了:Pony
被观察者改名了:Rookie

通过以上两个类和接口就可以快速构建一个观察者模式,减少代码量,爱护手指。

手把手教你学SINULINK-- --Linear Transformer 模块 模块是 Simulink 中用于模拟理想变压器行为的重要工具。通过本文的详细介绍,希望你能更好地理解和使用模块。 阅读详情

相关推荐

Python 实现 傅里叶级数 对 函数拟合 并绘图

好记性不如烂笔头 目录傅里叶级数变换原理代码实现效果图 傅里叶级数变换原理 原理:待续… 傅里叶级数变换公式: 代码实现 本次实现的是符号函数的拟合: 注:若要实现其他函数的拟合,修改程序中 fx 的表达式即可 """ 傅里叶级数""" import sympy as sym import numpy as np import matplotlib.pyplot as plt N = 8 # 拟合的阶数 L = sym.pi # 周期的一半 n, x = sym.symbols('n x')

qq_41676952的博客 1万+

Android观察者模式(Observable)实例

一:前言 最近在遇到了Android的开发中常用到的设计模式之观察者模式,观察者模式,所谓的模式就是一种设计思想,可以按照某种模式,写出更合理,简单,有效的代码。可以用在Android开发中,也可以用在Java,C#等等开发中,就类似单例模式,代理模式,模版等等。 二:什么是观察者模式 个人理解所谓的观察者模式,打个比喻,就好比,老师在教室上课,学生在教室听课,这里的老师就是被观察者,而这时候的在...

Venus 的博客 2389

AI量化投资开源平台——Qlib(微矿)的学习使用笔记(随缘更新)

Qlib 涵盖了量化投资的全过程,为用户的 AI 算法提供了高性能的底层基础架构,从框架设计上让用户可以更容易地应用 AI 算法来辅助解决量化投资的各个关键问题(例如 Alpha 预测,风险预测,市场动态性建模)。本文旨在记录一些面向初学者的基础内容。

in_void的博客 3133

JAVA设计模式-观察者模式(Observer、Observable实现)

1,首先设置一个主题类(即被观察者),继承自Observable类,代码如下 @Slf4j public class SubjectDemo extends Observable { String message ; public void setMessage(String s){ this.message = s; log.info("set message {}",this.message); setChanged();

weixin_41725862的博客 282

PSCAD通过python调用自动化库的实现

带有python脚本的pscad自动化PSCAD通过python调用自动化库的实现前期准备实现 PSCAD通过python调用自动化库的实现 在网上搜了一圈没有找到,通过油管的一个视频学到了,这里分享一下。 前期准备 下载PSCAD 在官方文档中建议PSCADV4.6.1及以上版本 下载python python这里没注明哪些版本可用,博主下载了最新的3.8.2使用正常。 下载IDE py...

橙子的博客 5911

告别“盲开”:手把手教你用MCU内置比较器搞定BLDC无感方波启动(附代码片段)

本文详细介绍了如何利用MCU内置比较器实现BLDC无感方波启动,解决传统无传感器控制中的'盲开'问题。通过虚拟中性点电路设计和三段式启动流程,结合反电动势检测和过零检测技术,提供了一套经济高效的解决方案,并附有可直接移植的代码片段,助力工程师快速实现可靠的无感控制。

weixin_33694172的博客 502

【java】Observer和Observable详解

1.必要性 1.1 观察者模式是oo设计中经常用到的模式之一,大家在解决实际需求时,观察者模式往往都会用到,而javase中已经提供了Observer接口和Observable类让你简单快速的实现观察者模式,因此有必要去了解Observer和Observable; 2.观察者模式概述 2.1 角色:被观察对象,观察者 2.2 关系: 1).被观察对象:观察者 = 1:n 2).被观察对象状态发生变化,会通知所有观察者,观察者将做出相应的反应 2.3 详细说明:参见【设计模式】观察者模式 3.源码

大叶子不小的博客 2196

保姆级教程:在Davinci Configurator里配置BswM的ECU状态机(附状态切换流程图)

本文提供了一份详细的AUTOSAR BswM模块配置指南,通过Davinci Configurator工具实现ECU状态机的构建与管理。内容涵盖从模式请求端口创建到状态切换规则定义的全流程,特别针对Ecu State Handling进行了深入解析,并附有状态切换流程图,帮助汽车电子工程师高效完成ECU状态管理配置。

weixin_28366475的博客 410

Observer 观察者

在Java中通过Observable类和Observer接口实现了观察者模式。一个Observer对象监视着一个Observable对象的变化,当Observable对象发生变化时,Observer得到通知,就可以进行相应的工作。例如在文档/视图结构中,文档被修改了,视图就会得到通知。       java.util.Observable中有两个方法对Observer特别重要,一个是setCha...

Java-Jinguo 261

Winform从入门到精通(21)——ProgressBar(史上最全)

本介绍ProgressBar控件的详细用法,包含所有属性、事件,绝对史上最全!

qq_34059233的博客 3350

AI上推荐 之 逻辑回归模型与GBDT+LR(特征工程模型化的开端)

1. 前言 随着信息技术和互联网的发展, 我们已经步入了一个信息过载的时代,这个时代,无论是信息消费者还是信息生产者都遇到了很大的挑战: 信息消费者:如何从大量的信息中找到自己感兴趣的信息? 信息生产者:如何让自己生产的信息脱颖而出, 受到广大用户的关注? 为了解决这个矛盾, 推荐系统应时而生, 并飞速前进,在用户和信息之间架起了一道桥梁,一方面帮助用户发现对自己有价值的信息, 一方面让信息能够展现在对它感兴趣的用户前面。 推荐系统近几年有了深度学习的助推发展之势迅猛, 从前深度学习的传统推荐模型(协

Miracle8070 8250

设计模式之观察者模式(Observable与Observer)

1.什么是观察者模式  简单情形:有A、B、C、D等四个独立的对象,其中B、C、D这三个对象想在A对象发生改变的第一时间知道这种改变,以便做出相应的响应或者对策。  上面的这种情形,就是观察者模式。  当然可以有多个观察者,多个被观察者。  观察者与被观察者也不是对立的,一个对象可以观察其他对象,也可以被其他对象观察。2.观察者模式的应用  为了更好的理解什么是观察者模式,下面我举一些可能用到该模式

672

Dify智能体开发:大语言模型(LLM)问题分类

通过定义分类描述,问题分类器能够根据用户输入,使用 LLM 推理与之相匹配的分类并输出分类结果,向下游节点提供更加精确的信息。

王国平的博客 2247

java自实现观察者模式Observer和Observable详解

转载请标明出处:http://blog.youkuaiyun.com/u012250875/article/details/77747878 1.必要性 1.1 观察者模式是oo设计中经常用到的模式之一,大家在解决实际需求时,观察者模式往往都会用到,而javase中已经提供了Observer接口和Observable类让你简单快速的实现观察者模式,因此有必要去了解Observer和Observable; ...

qq_38122518的博客 554

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

java observer和observable 实现观察者模式

在Java中通过Observable类和Observer接口实现了观察者模式。一个Observer对象监视着一个Observable对象的变化,当Observable对象发生变化时,Observer得到通知,就可以进行相应的工作。例如在文档/视图结构中,文档被修改了,视图就会得到通知。       java.util.Observable中有两个方法对Observer特别重要,一个是setCha

congqingbin的专栏 1574

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

java observable类,利用Java提供的Observer接口和Observable类实现观察者模式

对于观察者模式,其实Java已经为我们提供了已有的接口和类。对于订阅者(Subscribe,观察者)Java为我们提供了一个接口,JDK源码如下:package java.util;public interface Observer {void update(Observable o, Object arg);}和我们上一篇实现的观察者一样,仅提供一个update方法用于接收通知者的通知做出相应改...

weixin_42365804的博客 623

java jdk 观察者模式_JDK观察者模式实现Observer Observable

JDK提供了观察者模式的实现类java.util.Observer,java.util.Observable.java.util.Observer为观察者。java.util.Observable观察物。1.观察物Java代码 package observer;import java.util.Observable;public class Publisher extends Observabl...

weixin_31502485的博客 266

java 观察者模式(四)Observable 和 Observer 实现

虽然不推荐使用了,但是可以作为了解看看,实现起来不是特别复杂。加上业务的话可能会繁琐,需要理解透彻。

fengyang182的博客 609

[置顶] Java Observer与Observable实现观察者模式

在Java中通过Observable类和Observer接口实现了观察者模式。Observer对象是观察者,Observable对象是被观察者。 1. 实现观察者模式 实现观察者模式非常简单, [1]创建被观察者类,它继承自java.util.Observable类; [2]创建观察者类,它实现java.util.Observer接口; [3]对于被观察者类, 添加它的观察者: void a

写博客只为学习 394

JDK中提供的实现——通过 java.util.Observable 类和 java.util.Observer 接口定义了观察者模式,只要实现它们的子类就可以编写观察者模式实例

JDK中提供的实现 在 Java 中,通过 java.util.Observable 类和 java.util.Observer 接口定义了观察者模式,只要实现它们的子类就可以编写观察者模式实例。 1,Observable类 Observable 类是抽象目标类(被观察者),它有一个 Vector 集合成员变量,用于保存所有要通知的观察者对象,下面来介绍它最重要的 3 个方法。 void addObserver(Observer o) 方法:用于将新的观察者对象添加到集合中。 void notif

qq_39368007的博客 868

利用Java提供的Observer接口和Observable类实现观察者模式

对于观察者模式,其实Java已经为我们提供了已有的接口和类。对于订阅者(Subscribe,观察者)Java为我们提供了一个接口,JDK源码如下: 1 package java.util; 2 3 public interface Observer { 4 void update(Observable o, Object arg); 5 } 和我们上一篇实现的观察者一...

weixin_33965305的博客 273

Java 语言使用 Observer/Observable 实现简单的观察者模式

为了更好的理解什么是观察者模式,下面列举壹些可能用到该模式的情形或例子: (1)周期性任务。比如linux中的周期性任务命令crontab命令,win7 下的定时关机命令shutdown -s -t 1200(1200s后关机)。当预期系统时间到后,这些命令就可以通知相应的观察者激活相应的命令并执行对应操作。 (2)重新加载配置文件。现在做大型系统基本都会有配置文件,例如在SSH项目中每次修改配置文件后,都需要重新启动服务器才能使得新的配置文件生效,当然SSH中貌似已经提供了参数设置,当配置文件修改时,可以

NullPointerException 3120

Java基础类库之Observable(观察者模式)

说明 在 Java 程序中,类 Observable 和接口 Observer 的最大功能就是实现观察者模式。 举个例子 例如现在房地产调控比较严格,很多购房者都在关注着房子的价格变化,每当房子价格变化时,所有的购房者都可以观察得到。实际上以上的购房者都属于观察者,他们都在关注着房子的价格。这个观察变化的过程就可以成为观察者模式。 如果实现观察模式 在 Java 中可以直接依靠类 Observab...

Wayfreem的博客 9281

Rx_java(2) 使用java中的类(Observable与Observer)实现观察者模式

相关文章 观察者模式实例讲解 Rx_java2的基本使用 Rx_java2中的线程控制 Rx_java2操作符介绍1(Map、Flatmap) Rx_java2操作符介绍2(debounce 、filter 、switchMap ) Rx_java2操作符介绍3(throttleFirst、debounce ) Retrofit结合RxJava2使用 写在前面 前面我们自己编写观察者与被

D先生的博客 757

使用java类库中的Observable类和Observer接口实现观察者模式(精简版)

使用java类库中的Observable类和Observer接口实现观察者模式会更加精简,Observable类定义了观察者关注的主题行为,我们只需要继承Observable类就可以达到复用的效果,不用自己定义抽象类或接口,Observable类中有三个方法需要我们了解,第一个是添加观察者的方法addObserver(Observer o),第二个标记我们继承类Observable的主题类对象为已

蓝胖子的博客 1266

设计模式-Observer(观察者模式)

设计模式-Observer(观察者模式) Observer模式应该可以说是应用最多、影响最广的模式之一,因为Observer的一个实例Model/View/Control(MVC)结构在系统开发架构设计中有着很重要的地位和意义,MVC实现了业务逻辑和表示层的解耦。个人也认为Observer模式是软件开发过程中必须要掌握和使用的模式之一。在MFC中,Doc/View(文档视图结构)提供了实现MVC

luhuajcdd的专栏 1503
上一篇: 【Java】Future和Callable
下一篇: 【深入理解Java虚拟机】学习小结
ColdFireMan
博客等级 码龄10年 27粉丝 112原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值