设计模式-17观察者模式

17、神经网络训练算法与高阶模糊Cohen - Grossberg神经网络稳定性分析 本文介绍了一种新的数据驱动算法用于神经网络训练,该算法继承三次样条权重函数的优点,具有简单架构和良好泛化性能,并通过并行机制显著提升训练速度。同时,研究了高阶模糊Cohen-Grossberg神经网络(HOFCGNN)在可变及无界延迟下的稳定性,利用M矩阵理论和向量Lyapunov函数方法,证明了系统平衡点的存在性、唯一性和全局指数稳定性。研究成果为神经网络的高效训练与稳定应用提供了理论支持和技术路径。 阅读详情

观察者模式

原理:

观察者模式类似于定牛奶业务

subject:等级、移除、通知

  • registerObserver:注册
  • removeObserver:移除
  • notifyObservers:通知所有的注册的用户,根据需求不同,可以更新数据,让用户来取,也可能是实施推送,看具体需求而定

observer:接收输入,主要是update()方法

观察者模式:对象之间多对一的一种设计方案,被依赖的对象为subject,依赖的对象为observer,subject通知Observer变化,比如这里的奶站是subject,是1的一方,用户是Observer,是多的一方

案例:

实现一个不同网站请求天气网站,获取天气不断变化的功能
类图:
在这里插入图片描述

/**
 * 主题接口
 */
public interface Subject {
    void registerObserver(Observer observer);
    void removeObserver(Observer observer);
    void notifyObserver();
}

/**
 * 主题类
 */
public class WeatherData implements Subject {

    private int temperature;
    private int pressure;
    private int humidity;

    private List<Observer> observers = new ArrayList<>();

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

    @Override
    public void removeObserver(Observer observer) {
        if(observers.contains(observer)){
            observers.remove(observer);
        }
    }

    @Override
    public void notifyObserver() {
        for (Observer o: observers) {
            o.update(temperature,pressure,humidity);
        }
    }
    //气温变化,通知所有订阅者
    public void setCondition(int temperature,int pressure,int humidity){
        this.temperature = temperature;
        this.pressure = pressure;
        this.humidity = humidity;
        notifyObserver();
    }
}

//观察者
public interface Observer {
    void update(int temperature,int pressure,int humidity);
}

/**
 * 具体订阅者
 */
public class Sina implements Observer {

    private int temperature;
    private int pressure;
    private int humidity;

    @Override
    public void update(int temperature, int pressure, int humidity) {
        this.temperature = temperature;
        this.pressure = pressure;
        this.humidity = humidity;
        display();
    }

    private void display() {
        System.out.println("这里是新浪网站");
        System.out.println("========temperature is ======" + temperature + "==============");
        System.out.println("========pressure is =======" + pressure + "=============");
        System.out.println("========humidity is ======" + humidity + "=============");
    }
}


/**
 * 具体订阅者
 */
public class Baidu implements Observer {

    private int temperature;
    private int pressure;
    private int humidity;

    @Override
    public void update(int temperature, int pressure, int humidity) {
        this.temperature = temperature;
        this.pressure = pressure;
        this.humidity = humidity;
        display();
    }

    private void display() {
        System.out.println("这里是百度网站");
        System.out.println("========temperature is ======" + temperature + "==============");
        System.out.println("========pressure is =======" + pressure + "=============");
        System.out.println("========humidity is ======" + humidity + "=============");
    }
}

 
public class Client {

    public static void main(String[] args) {
        WeatherData weatherData = new WeatherData();
        Sina sina = new Sina();
        Baidu baidu = new Baidu();

        weatherData.registerObserver(sina);
        weatherData.registerObserver(baidu);

        System.out.println("通知各个观察者,看看信息");
        weatherData.setCondition(10,100,30);

        weatherData.removeObserver(baidu);
        weatherData.notifyObserver();

    }
}
源码使用:

观察者模式在JDK中的源码分析:

  • JDK中的Observable类就使用了观察者模式

角色分析:

  • Observable的作用和地位等价于我们前面讲过的Subject
  • Observable是类不是借口,类中已经实现了核心的方法,即管理Observer的方法add。。delete。。notify等
  • Observer 的作用和地位等价于我们讲过的Observer,有update方法
  • Observable和Observer的使用方法和前面讲过的一样,只是Observable是类,通过继承来实现观察者模式
45.qt quick-qml虚拟软键盘详解(一) 1.qml虚拟键盘介绍 Qt虚拟键盘的主要功能包括: 可定制的键盘布局和风格与动态切换。 带有单词选择的预测性文本输入。 角色预览和替代角色视图。 自动大小写和空格插入。 不同分辨率的可伸缩性。 支持不同的字符集(拉丁,简体/繁体中文,印地语,日语,阿拉伯语,希伯来语,韩语和其他)。 支持大多数常见的输入语言,可以轻松扩展语言支持。 从左到右和从右到左的输入。 硬件键支持2路和5路导航。 手写支持,带有全屏输入的手势。 音频反馈。 跨平台功能。 支持多国语言,高达40多个语言 本 阅读详情

相关推荐

从Xilinx FPGA到MIPI DSI LCD屏:手撸代码的实战经验分享

本文分享了使用Xilinx FPGA驱动MIPI DSI LCD屏的实战经验。作者从依赖官方IP核失败,到与底层D-PHY IP缠斗,最终通过手撸代码,直接配置GTY收发器原语并实现完整的D-PHY与DSI协议栈,成功点亮屏幕。文章详细剖析了协议细节、Vivado工具链的调试技巧与避坑指南,为FPGA工程师提供了从理论到实践的宝贵参考。

weixin_29188997的博客 399

设计模式-17观察者模式Observer Pattern

观察者模式是一种行为型设计模式,用于在对象间建立一对多的依赖关系。当主题对象状态改变时,所有依赖的观察者对象会自动收到通知并更新。该模式适用于事件处理、发布-订阅机制等场景,能实现松耦合的系统架构。典型结构包括Subject接口(定义添加/删除观察者方法)、Observer接口(定义更新方法)以及具体实现类。实现时,主题对象维护观察者列表,状态变化时遍历列表通知所有观察者。这种模式广泛应用于GUI事件处理、消息推送系统等需要实时数据更新的场景。

d3y1`5 81_09 956

全网最全 | Linux(Ubuntn)系统安装 | 硬盘挂载 | 用户创建 | 生信分析配置

昨天(2024年7月23日)我们分享了学生及科研人员电脑配置推荐 | 笔记本+外置显卡配置,性能足够支持完成你博士论文文本内容,那么今天我们就分享一文解决 | Linux(Ubuntn)系统安装 | 硬盘挂载 | 用户创建 | 生信分析配置的教程,我们使用一文来解决大家在做生信时遇到安装系统、配置环境的问题。在此文中,我们尽快可能给出一套全网最全的教程。目标是解决新手小白同学查资源的困惑和难题。但是,每个童鞋遇到的问题不一样,此教程也不可能把你遇到的每个问题都归纳在其中。我们也希望,

BioinfoDu 2260

设计模式17:Observer Pattern (观察者模式)

Define:Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically. 一、 观察者(Observer)模式观察者模式又叫做发布-订阅(Publish/Sub

薛敬明的专栏 1237

遥感图像融合实战:5分钟搞懂全色与多光谱图像如何提升分辨率(附Python代码)

本文通过实战案例,详细解析了如何利用全色锐化技术融合全色与多光谱遥感图像,以提升图像分辨率。文章深入浅出地介绍了核心概念、环境配置、经典GS融合算法的Python代码实现,并对比了不同算法的优劣,最后提供了效果评估方法与实战陷阱分析,帮助读者快速掌握遥感图像融合的关键技术。

weixin_29041195的博客 394

《SAP FICO系统配置从入门到精通共40篇》030、集成配置:FI与生产计划(PP)的自动科目确定

FI和PP的自动科目确定,本质上是把生产业务翻译成会计语言。翻译规则就藏在那些配置表里。配的时候多想一步:这个业务动作,在财务眼里是什么?是材料消耗?是产出入库?还是工费分摊?想清楚这个,再看配置界面,那些代码就不是天书了。最好的测试方式,是月底关账前,让生产部门跑一遍所有类型的生产订单。配置对不对,业务最知道。

985大学毕业,前某大厂员工,啥都会点的程序员! 573

C#设计模式(17)——观察者模式(Observer Pattern)

C#设计模式(17)——观察者模式(Observer Pattern) 一、引言   在现实生活中,处处可见观察者模式,例如,微信中的订阅号,订阅博客和QQ微博中关注好友,这些都属于观察者模式的应用。在这一章将分享我对观察者模式的理解,废话不多说了,直接进入今天的主题。 二、 观察者模式的介绍 2.1 观察者模式的定义   从生活中的例子...

fgmah2000的博客 156

PR工具timing report中setup time的计算过程

然后去pr工具里报告report_delay_calculation/reportDelayCalculation -from related_pin -to constraint_pin。这里constraint pin就是D pin (D0 D1 D2 D3),related pin就是 CK pin。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?

m0_61544122的博客 453

设计模式(17)——观察者模式(Observer Pattern)

一、引言 在现实生活中,处处可见观察者模式,例如,微信中的订阅号,订阅博客和QQ微博中关注好友,这些都属于观察者模式的应用。在这一章将分享我对观察者模式的理解,废话不多说了,直接进入今天的主题。 二、 观察者模式的介绍 2.1 观察者模式的定义 从生活中的例子可以看出,只要对订阅号进行关注的客户端,如果订阅号有什么更新,就会直接推送给订阅了的用户。从中,我们就可以得出观察者模式的定义。

Foreach 414

【人工智能】拒绝焦虑,理性突围:AI 时代 Java 工程师的职业重构与进化指南

摘要:在AI技术快速发展的背景下,Java工程师面临职业转型挑战。本文通过MECE原则解构工作内容,划分高替代风险区(如CRUD开发)、高增效潜能区(如逻辑优化)和高核心壁垒区(如架构设计),指出AI对不同任务的影响程度。从劳动经济学视角分析行业将呈现K型分化,初级执行者被替代,而精通AI协作的全栈工程师需求增长。文章强调警惕过度依赖AI导致认知能力退化,并提出转型路径:掌握AI驱动开发(AIDD)、深耕领域驱动设计(DDD)、拓展全流程能力及AI原生应用开发。最终结论指出,未来的核心竞争力在于结合AI工具

奶爸的编程之路,也就一周冷个三天 131

DeepSeek如何构建可扩展的 AI 驱动交易系统,基于 MetaTrader 5 与 Python 利用先进的数据处理、机器学习和容器化部署来优化算法交易。

MT5 Python API 架构设计分为三层:通信层:利用异步消息传递(例如 ZeroMQ 或标准套接字编程)支持每秒数万个数据请求。转换层: C++ 动态库有效地将 MT5 命令转换为 Python 对象(反之亦然),从而优化速度和内存使用率。接口层:提供Pythonic API,封装了所有终端功能,包括:1)实时价格订阅(滴答或秒级更新)2)历史数据检索(从M1到更高的时间范围)3)订单流监控(交易详情和市场深度)4)策略执行引擎(用于算法交易)

iCloudEnd的博客 1379

基于odoo17的设计模式详解---观察者模式

摘要: 观察者模式是Odoo框架的核心设计模式,通过@api.depends装饰器实现,用于建立字段间的动态依赖关系。当被观察字段(如订单行价格)变化时,依赖的计算字段(如订单总金额)自动更新,实现解耦与高效响应。该模式简化了开发(如销售模块的金额计算),但需注意性能优化与级联更新风险。掌握观察者模式有助于编写更健壮、可维护的Odoo代码,深入理解其ORM设计理念。

weixin_44247470的博客 678

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

【python设计模式】17、观察者模式

另外,观察者模式还可以被解读为一种“相互作用”的方式。使用观察者模式,可以将股票价格作为被观察者,将分析系统作为观察者,当股票价格发生变化时,被观察者会自动通知观察者,观察者可以根据价格变化做出相应的决策。使用观察者模式,可以将事件作为被观察者,将游戏对象作为观察者,当事件发生时,被观察者会自动通知观察者,观察者可以根据事件做出相应的反应。观察者模式是一种常见的设计模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,当主题对象发生改变时,所有的观察者都会收到通知并进行相应的处理。

Htojk的博客 1200

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

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

观察者模式

yhs的博客 375

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

设计模式——观察者模式17

观察者模式

qq_45178641的博客 730

17.java设计模式之观察者模式

代码实现 public class CurrentCondition { // 被通知的对象类 // 温度 private double temperature; // 压力 private double pressure; // 湿度 private double humidity; public void update(double temperature, double pressure, double humidity) { this.temperature = temperature; this.

weixin_45032957的博客 175
上一篇: 设计模式-16迭代器模式
下一篇: 设计模式-18中介者模式
胖柯G
博客等级 码龄10年 453粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值