观察者模式(Observer)定义对象间的一对多的依赖关系,以便当一个对象改变时,所有依赖于它的对象都得到通知并且自动刷新。
从定义来理解很容易就可以分析出了该模式的结构。简单的来说,就是有个发布者对象,发布者对象掌握着信息资源,其他接收者对象需要这些信息资源。当信息资源改变的时候,我们希望其他接收者都可以知道 这些改变。
通过思考我们自己就可以设计出具有该功能的框架了,发布者有个集合属性,提供方法将接收者添加或移出集合,接收者实现统一的升级信息资源的接口。当发布者的信息资源发生了改变时,通过该集合,调用接口中升级信息资源的方法。这样,就可以将处在集合中的所有接收者都获得变更。而接收者通过发布者的添加方法让自己处于集合中,并决定自己什么时候退出集合。按现实生活中的例子来讲,就是订报纸一样的,报社拥有新闻信息,是发布者,而我们相当于观察者,报社有个接电话的方法,我们打电话告知报社我们需要新闻。报社记录下我们的地址,相当于报社拥有了我们的引用,而报社有个表单,记下了所有的引用。当报社出版报纸后,根据表单,将报纸发往每个观察者,这样我们就获得了报纸。
这种模式在java的gui编程中就有体现,在事件监听上使用,按钮就是发布者,而我们编写的事件就是观察者,时间需要知道按钮什么时候被点击了,当按钮被点击后,就通知所有登记的事件。
当然,这是发布者主动的“推”出了信息,还有另一种方法是观察者主动去“拉”取信息。观察者依赖发布者,保存了发布者的引用,因此可以主动获得发布者的信息。
该模式的图如下:
分享到:
相关推荐
总的来说,HeadFirst设计模式的学习笔记2关于观察者模式的演示,旨在帮助开发者理解如何使用观察者模式来构建可扩展的系统。通过实际的代码示例,我们可以更深入地掌握这一模式,并将其应用到日常开发中,提升代码的...
观察者模式是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。这个模式在很多场景下都有广泛的应用,例如事件处理、...
### 设计模式学习笔记 #### 一、设计模式概述 设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它描述了在软件设计过程中的一些不断重复发生的问题,以及该问题的解决方案。设计...
本课程针对上述问题,有针对性的进行了升级 (1) 授课方式采用 图解+框架源码分析的方式,让课程生动有趣好理解 (2) 系统全面的讲解了设计模式,包括 设计模式七大原则、UML类图-类的六大关系、23种设计模式及其分类,...
设计模式是软件工程中的一种重要概念,它代表了在特定情境下解决问题的...设计模式笔记中的内容应该涵盖了以上所述的各种模式,通过深入学习和实践,你可以将这些模式应用到实际项目中,提升自己的编程技能和设计能力。
031114_【第11章:Java常用类库】_观察者设计模式笔记
行为型模式专注于类或对象间的交互和职责分配,如模板方法、命令、解释器、责任链、访问者、中介者、备忘录、观察者、状态和策略模式,它们定义了对象如何协作和执行任务。 状态机模式,也称为状态对象模式,是一种...
在《深入浅出设计模式》的学习笔记中,我们可以看到几种关键的设计模式及其应用,包括策略模式、观察者模式、装饰者模式、工厂模式和抽象工厂模式。 1. **策略模式**: - 策略模式的核心在于将算法族封装在独立的...
在《23个设计模式图解--学习笔记》中,我们探讨了这些模式,以便于理解和应用到实际开发中。以下是这23个设计模式的详细说明: 1. **工厂方法**(Factory Method):定义一个用于创建对象的接口,让子类决定实例化...
这份"根据《JAVA与设计模式》整理的笔记及示例代码"涵盖了Java语言和设计模式的核心概念,旨在帮助开发者理解和应用这些模式。 一、设计模式的基本概念 设计模式是对在特定情境下软件设计问题的解决方案的一种描述...
- **观察者模式**:定义了一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。 - **策略模式**:定义了一系列算法,并将每一个算法封装起来,使它们可以相互替换。 - **...
3. **观察者模式**:行为型设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。在事件驱动编程中,如GUI组件间的交互,广泛使用此模式。 4. **...
《新版设计模式手册》中的笔记通过21个设计模式的概念图,直观地展示了这些模式的结构和交互方式,帮助读者形成清晰的认识。同时,生活类比将复杂的编程概念与日常经验相结合,使学习更加生动有趣。例如,单例模式...
### 设计模式总结笔记 #### 一、概述 设计模式是一种在特定上下文中解决软件设计问题的方案。它并不是一种现成的代码片段或者框架,而是一种指导思想,帮助开发者理解如何更好地组织代码来解决问题。设计模式可以...
本文主要关注的是Java编程语言中的设计模式,结合“Java与模式-笔记二”的博客内容,我们将深入探讨其中的一些核心设计模式及其在实际开发中的应用。 首先,我们来谈谈单例模式(Singleton)。单例模式确保一个类...
在这个“设计模式之美”的学习笔记中,我们将探讨一些主要的设计模式,以及它们在实际开发中的应用。 首先,我们从创建型模式开始。这类模式主要用于对象的创建,如单例模式(Singleton)、工厂模式(Factory ...
### 《设计模式解析》第2版学习笔记关键知识点总结 #### 第一部分 面向对象软件开发简介 ##### 第一章 面向对象范型 - **面向对象范型概览**: - 本章通过对比结构化程序设计来引入面向对象的概念。 - 强调了...
在IT行业中,设计模式是软件开发中的...通过阅读并实践"pattern.zip"中的代码示例,你可以更深入地理解这些设计模式的实现细节和应用场景。记住,设计模式并不是银弹,选择合适的模式需要根据实际需求和上下文来判断。