首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

java设计模式-观察者模式

模式定义 定义了对象之间的一对多依赖,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。主题(Subject)是被观察的对象,而其所有依赖者(Observer)称为观察者。...UML类图 观察者模式实例 定义被观察者接口 /** * 抽象被观察者接口 * 定义了添加、删除、通知观察者方法 */ public interface Subject { public void...); } public void read() { System.out.println(name + " 收到消息:" + message); } } 测试观察者模式...改变主题或观察者中的一方,另一方不会受到影响。 JDK中也有自带的观察者模式,但是被观察者是一个类而不是接口,限制了它的使用和复用能力。...JDK内置观察者模式java.util.Observer接口, java.util.Observable类。 在JavaBean和Swing中也有观察者模式的设计思想。

669100

JAVA 设计模式 观察者模式

用途 观察者模式 (Observer) 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。 这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。...观察者模式是一种行为型模式。 结构 ?...图-观察者模式结构图 Subject : 主题类,保存所有订阅此主题的观察者观察者的数量是任意的。定义添加观察者 (Attach) 和删除观察者 (Detach) 的接口。...今天下雨 李四收到当前状态:今天下雨 王五收到当前状态:今天下雨 ======= 天气主题发布新消息 ======= 张三收到当前状态:明天天晴 王五收到当前状态:明天天晴 推荐 本文属于 JAVA...参考资料 《大话设计模式》《HeadFirst设计模式

71570
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Java设计模式-观察者模式

    观察者模式: 又称‘发布-订阅’模式, 定义一种对象间的一对多依赖关系(多个观察者Observer监听某一主题Subject). 当主题状态发生改变时,所有依赖它的对象都得到通知并被自动更新....JDK支持 Java语言自身提供了对观察者模式的支持: java.util包下提供了Observable类与Observer接口....下面我们就用Java的支持实现观察者模式的推模型: ConcreateSubject public class OrderSubject extends Observable { private..., 详细可参考博客: Java并发基础:Disruptor小结、并发框架Disruptor译文....而观察者模式允许独立的改变目标和观察者. 你可以单独复用Subject而不用管Observer 反之亦然. 它也使你可以在不改动Subject和其他Observer的前提下增加观察者.

    82460

    java观察者模式

    观察者模式又叫做发布-订阅(Publish/Subscribe)模式观察者模式是一种对象行为型模式。 ? 模式分析 观察者模式描述了如何建立对象与对象之间的依赖关系,如何构造满足这种需求的系统。...事件源对象、事件监听对象(事件处理对象)和事件对象构成了Java事件处理模型的三要素。...(2) 除了AWT中的事件处理之外,Java语言解析XML的技术SAX2以及Servlet技术的事件处理机制都基于DEM,它们都是观察者模式的应用。...Java语言提供的对观察者模式的支持 在java.util.Observable类中,已经实现了主要的功能,如增加观察者,删除观察者和通知观察者,我们可以直接通过继承Observable使用这些功能...java.util.Observer接口是观察者接口,它的update方法会在java.util.Observable中的notifyObservers方法中被回调,以获得最新的状态变化。

    51820

    Java设计模式-观察者模式

    观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象在状态上发生变化时,会通知所有观察者对象,让他们能够自动更新自己。...组成部分 抽象主题角色 把所有观察者对象的引用保存在一个集合中,每个抽象主题角色都可以有任意数量的观察者,抽象主题提供一个接口,可以增加和删除观察者角色,一般用一个抽象类或接口来实现。...抽象观察者角色 为所有具体的观察者定义一个接口,在得到主题的通知时更新自己 具体观察者角色 该角色实现抽象观察者角色所要求的更新接口,以便使本身的状态与主题的状态相协调,如果需要,具体观察者角色可以保有一个指向具体主题角色的引用...System.out.println("C同学您的APP需要更新"); } }); subject.notification(); } } 复制代码 Java...内置的观察者模式框架 java内置观察者模式框架提供了类Observable与接口Observer。

    52620

    JAVA设计模式-观察者模式

    概念 观察者模式:定义了对象之间的一对多依赖,这样一来,当一个对象状态改变时,他的所有依赖者都会收到通知并自动更新。 ?...观察者模式涉及的角色 主题(Subject):一对多中的一,持有数据,当数据更新时,通知已注册的观察者 观察者(Observer):一对多中的多,接收主题数据做出响应 举个栗子 一位妈妈(主题)有两个孩子...代码 Person.java,Mother和Child都继承这个类[这步和讲述观察者模式没什么关系] public class Person { private String name;...return name; } public void setName(String name) { this.name = name; } } Mother.java...有新类型的观察者出现时,主题的代码不需要修改。假如我们有一个新的具体类需要当观察者,我们不需要为了兼容新类型而修改主题的代码,所有要做的就是在新的类里实现此观察者接口,然后注册成观察者即可。

    38410

    java设计模式-观察者模式

    基本概念:观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。...观察者模式又叫发布-订阅(Publish/Subscribe)模式。 UML结构图 ?...上图是Observer 模式的结构图,让我们可以进行更方便的描述: Subject类:它把所有对观察者对象的引用保存在一个聚集里,每个主题都可以有任何数量的观察着。...Observer类:抽象观察者,为所有的具体观察者定义一个接口,在得到主题的通知时更新自己。...总结 观察者模式何时适用? 当一个抽象模型有两个方面,其中一个方面依赖于另一方面。将这二者封装在独立的对象中可以使他们各自独立地改变和复用。

    58320

    java设计模式】之观察者模式

    介绍: 观察者模式(Observer)完美的将观察者和被观察的对象分离开。举个例子,用户界面可以作为一个观察者,业务数据是被观察者,用户界面观察业务数据的变化,发现数据变化后,就显示在界面上。...观察者模式在模块之间划定了清晰的界限,提高了应用程序的可维护性和重用性。...观察者设计模式定义了对象间的一种一对多的组合关系,以便一个对象的状态发生变化时,所有依赖于它的对象都得到通知并自动刷新 其实就是发布订阅模式,发布者发布信息,订阅者获取信息,订阅了就能收到信息,没订阅就收不到信息...package com.test.observer; import java.util.ArrayList; import java.util.List; /** * 被观察者,也就是微信公众号服务...------------------------"); server.removeObserver(userZhang); server.setInfomation("JAVA

    42221

    Java观察者模式(Observer)

    观察者模式java GOF23种设计模式中的一种。...在最近介绍的Redis和ActiveMQ中都涉及到了观察者模式,所以我们在本文详细介绍下此模式观察者模式   观察者模式又称为发布/订阅(Publish/Subscribe)模式,在对象之间定义了一对多的依赖...二、手动实现观察者模式 1.定义抽象被观察者角色 package com.dpb.observer; import java.util.ArrayList; import java.util.List...三、Java内置观察者模式实现   在java.util包中包含有基本的Observer接口和Observable抽象类.功能上和Subject接口和Observer接口类似.不过在使用上,就方便多了,...(DelegationEventModel) • 事件源----------------目标对象 • 事件监听器------------观察者 京东商城中,群发某商品打折信息 Java代理模式

    79430

    Java设计模式观察者模式

    什么是观察者模式观察者模式是一种行为设计模式,它建立了一种对象之间的一对多依赖关系。在这种模式中,一个对象(称为主题)维护了一个观察者列表,并在状态变化时通知所有的观察者。...观察者模式的结构在Java中,观察者模式包含以下几个关键组件:Subject(主题):维护一组观察者对象,并提供方法来添加、删除和通知观察者。...观察者模式的实现步骤在Java中,实现观察者模式通常包括以下步骤:定义观察者接口(Observer):定义一个更新方法,以便主题在状态变化时通知观察者。...观察者模式的使用场景对象间的一对多依赖关系:当一个对象的状态发生变化需要通知多个其他对象时,可以考虑使用观察者模式。...总结观察者模式是一种非常有用的设计模式,它能够建立对象之间的一对多依赖关系,实现松散耦合的消息通信。在Java中,观察者模式广泛应用于GUI编程、事件驱动编程以及分布式系统开发等领域。

    27121

    Java设计模式(十五)----观察者模式

    观察者模式 一、定义 二、结构 具体案例 推模型和拉模型 三、Java提供的对观察者模式的支持 Observer接口 Observable类 一、定义 观察者模式是对象的行为模式...观察者模式是满足这一要求的各种设计方案中最重要的一种。 下面以一个简单的示意性实现为例,讨论观察者模式的结构。 ?...三、Java提供的对观察者模式的支持   在JAVA语言的java.util库里面,提供了一个Observable类以及一个Observer接口,构成JAVA语言对观察者模式的支持。...java.util.Observable类的子类。...怎样使用JAVA观察者模式的支持 例子同上 被观察者类源代码 public class Article extends Observable { private String article

    76880

    观察者模式——Java实例

    观察者模式——Java实例 一、定义        观察者模式(有时又被称为模型-视图(View)模式、源-收听者(Listener)模式或从属者模式)是软件设计模式的一种。...观察者模式是满足这一要求的各种设计方案中最重要的一种。         ...观察者模式结构中通常包括观察目标和观察者两个继承层次结构,其结构如图所示:        观察者模式所涉及的角色有: 抽象主题(Subject)角色:抽象主题角色把所有对观察者对象的引用保存在一个聚集...由于观察目标和观察者没有紧密地耦合在一起,因此它们可以属于不同的抽象化层次; (3) 观察者模式支持广播通信,观察目标会向所有已注册的观察者对象发送通知,简化了一对多系统设计的难度; (4) 观察者模式满足...五、参考博客 https://www.cnblogs.com/renhui/p/6479748.html https://www.cnblogs.com/java-my-life/archive/2012

    22330

    java监听设计模式java观察者设计模式

    今天给大家分享一下观察者设计模式(监听设计模式),该模式在很多主流得框架、源码中使用率非常高。...其实这个地方就是使用了观察者设计模式。...在上述例子中,如果不使用观察者设计模式,要怎么设计比较合理,任何一种设计模式的出现都有它使用的场景,这都是历经多少前辈的经验总结出来的,观察者设计模式也不例外 观察者模式的应用场景: 1、 对一个对象状态的更新...定义 观察者模式(有时又被称为发布-订阅Subscribe>模式、模型-视图View>模式、源-收听者Listener>模式或 从属者模式)是软件设计模式的一种。...在此种模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各 观察者所提供的方法来实现。此种模式通常被用来实现事件处理系统。

    64921

    Java 设计模式(九)《观察者模式

    观察者模式 当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为型模式。...---- 所属类型: 行为型 标签: Java Gang Of Four Difficulty-Beginner(入门级难度) 注: 什么是 GOF(四人帮,全拼 Gang of Four)?...需要在系统中创建一个触发链,A对象的行为将影响B对象,B对象的行为将影响C对象……,可以使用观察者模式创建一种链式触发机制。 ---- 注意事项: JAVA 中已经有了对观察者模式的支持类。...观察者模式没有相应的机制让观察者知道所观察的目标对象是怎么发生变化的,而仅仅只是知道观察目标发生了变化。...---- 实际应用 java.util.Observer java.util.EventListener javax.servlet.http.HttpSessionBindingListener RxJava

    40530

    设计模式Java实现-观察者模式

    ✨这里是第七人格的博客✨小七,欢迎您的到来~✨系列专栏:设计模式✈️本篇内容: 观察者模式✈️ 本篇收录完整代码地址:https://gitee.com/diqirenge/design-pattern...在众多的设计模式之中,观察者模式以其独特的魅力,让我们在面对“一对多”的依赖关系时,能够优雅地解耦和响应变化。本文将带您深入探索观察者模式的世界,通过Java语言的实现,感受其在实际应用中的威力。...观察者模式应运而生,它允许一个对象(股票)维护一个依赖它的对象列表(投资者),并在状态发生变化时自动通知所有依赖它的对象。...实现观察者类:投资者类实现了观察者接口,用于响应股票价格的变化。在接收到通知时,投资者类会输出一条包含投资者姓名和新股票价格的消息。编写测试类:测试类用于验证观察者模式的实现是否正确。...总结观察者模式是一种非常实用的设计模式,它允许我们以一种松耦合的方式处理对象之间的依赖关系。在本文中,我们通过Java语言实现了观察者模式,并将其应用于股票交易系统的示例中。

    11520

    java设计模式(六)--观察者模式

    转载:设计模式(中文-文字版) 目录: 简单目标任务实现 观察者模式介绍 观察者模式代码实现 观察者模式是JDK中使用最多的模式之一,非常有用。...2.观察者模式 简单的认识下观察者模式。比如报纸,客户订阅报纸,然后报社发送报纸到订阅的用户手里。报社就是一个主题,而订阅的客户就是观察者。...5.使用java内置的观察者模式 java.util下包含了Observer接口和Observable类,这和我们之前的Subject、Observer接口很类似。...下面看代码实现,注意导入的包的类型: 5.1WeatherData修改 /** * 观察者模式 * 角色:主题 * 通过继承java内置的对象来实现 * Created by mrf on 2016.../** * 观察者模式 * 角色:观察者 * 通过实现java内置的方法实现观察功能 * Created by mrf on 2016/3/1. */ public class CurrentConditionsDisplay

    1.1K100
    领券