观察者模式定义:定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,他的所有依赖者都会收到通知并自动更新。
UML
图(略)
例子:
import java.util.HashMap;
import java.util.Map;
/**
* 主题类,被观察者对象
*
*/
public class Subject {
private Map<Observer, Observer> mapObserver = new HashMap<Observer, Observer>();
/**
* 注册方法,表示订阅
* @param observer
*/
public void register(Observer observer) {
mapObserver.put(observer, observer);
}
/**
* 取消订阅
* @param observer
*/
public void unregister(Observer observer) {
mapObserver.remove(observer);
}
/**
* 通知所有观察者
*/
public void notifyAllObserver() {
for (Map.Entry<Observer, Observer> entry : mapObserver.entrySet()) {
entry.getValue().update();
}
}
}
/**
* 观察者接口
*/
public interface Observer {
public void update();
}
/**
* 观察者1
*/
public class ConcreteObserver1 implements Observer {
@Override
public void update() {
System.out.println("ConcreteObserver1 update...");
}
}
/**
* 观察者2
*/
public class ConcreteObserver2 implements Observer {
@Override
public void update() {
System.out.println("ConcreteObserver2 update...");
}
}
/**
* 观察者模式的使用
*/
public class TestObserver {
/**
* @param args
*/
public static void main(String[] args) {
Subject subject = new Subject();
Observer observer1 = new ConcreteObserver1();
Observer observer2 = new ConcreteObserver2();
subject.register(observer1);
subject.register(observer2);
subject.notifyAllObserver();
}
}
分享到:
相关推荐
HeadFirst的设计模式系列书籍以其直观易懂的方式深受程序员喜爱,本笔记将深入探讨观察者模式的概念及其应用。 观察者模式的核心思想是定义对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的...
031114_【第11章:Java常用类库】_观察者设计模式笔记
设计模式是软件工程中的一种重要概念,它代表了在特定情境下解决问题的...设计模式笔记中的内容应该涵盖了以上所述的各种模式,通过深入学习和实践,你可以将这些模式应用到实际项目中,提升自己的编程技能和设计能力。
观察者模式是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。这个模式在很多场景下都有广泛的应用,例如事件处理、...
在这个“设计模式之美”的学习笔记中,我们将探讨一些主要的设计模式,以及它们在实际开发中的应用。 首先,我们从创建型模式开始。这类模式主要用于对象的创建,如单例模式(Singleton)、工厂模式(Factory ...
行为型模式:模版方法模式、命令模式、访问者模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式(Interpreter模式)、状态模式、策略模式、职责链模式(责任链模式) 2) 学习目标:通过学习,学员...
这份"根据《JAVA与设计模式》整理的笔记及示例代码"涵盖了Java语言和设计模式的核心概念,旨在帮助开发者理解和应用这些模式。 一、设计模式的基本概念 设计模式是对在特定情境下软件设计问题的解决方案的一种描述...
首先,设计模式可以分为三大类:创建型、结构型和行为型。创建型设计模式关注的是对象的创建,如工厂方法、抽象工厂、建造者、原型和单例模式,它们分别处理不同程度的对象创建延迟和实例化过程。结构型模式则涉及...
### 设计模式学习笔记 #### 一、设计模式概述 设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它描述了在软件设计过程中的一些不断重复发生的问题,以及该问题的解决方案。设计...
这份由台湾作者编写的笔记,结合Java语言,为读者提供了一种深入理解并应用设计模式的方式。以下是对这些设计模式的详细解释: 1. **创建型模式(Creational Patterns)** 创建型模式关注于对象的创建过程,它们帮助...
观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于实现事件驱动编程或者...
《HeadFirst设计模式笔记》是深入理解软件设计思想的一份宝贵资料,主要涵盖了设计模式这一核心编程概念。设计模式是经过实践验证的解决方案模板,用于解决在软件开发中经常遇到的问题,尤其在面向对象设计中。这篇...
4. **发布/订阅(观察者)模式**:这是一种行为型设计模式,它定义了对象之间的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。在JavaScript中,可以使用EventEmitter或Promise...
设计模式通常分为三类:创建型模式(如工厂模式、单例模式、建造者模式)、结构型模式(如适配器模式、装饰器模式、代理模式)和行为型模式(如策略模式、观察者模式、迭代器模式)。每种模式都有其特定的应用场景...
- **观察者模式**:定义了一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。 - **策略模式**:定义了一系列算法,并将每一个算法封装起来,使它们可以相互替换。 - **...
这个压缩包文件包含了23种设计模式的学习笔记和源码,旨在帮助开发者深入理解并熟练运用这些模式。以下是对每种设计模式的详细解释,以及它们在Java编程中的应用。 1. **单例模式**:确保一个类只有一个实例,并...
首先,我们要了解设计模式的三大分类:创建型模式、结构型模式和行为型模式。创建型模式关注对象的创建过程,如单例模式、工厂模式、建造者模式和原型模式等,它们旨在提供灵活的、扩展性强的对象创建方式。结构型...