`
wolfzha
  • 浏览: 45573 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

设计模式笔记之三 观察者模式

阅读更多

 

观察者模式定义:定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,他的所有依赖者都会收到通知并自动更新。

 

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 设计模式学习笔记2--观察者模式 demo

    HeadFirst的设计模式系列书籍以其直观易懂的方式深受程序员喜爱,本笔记将深入探讨观察者模式的概念及其应用。 观察者模式的核心思想是定义对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的...

    观察者设计模式笔记

    031114_【第11章:Java常用类库】_观察者设计模式笔记

    设计模式笔记

    设计模式是软件工程中的一种重要概念,它代表了在特定情境下解决问题的...设计模式笔记中的内容应该涵盖了以上所述的各种模式,通过深入学习和实践,你可以将这些模式应用到实际项目中,提升自己的编程技能和设计能力。

    设计模式-观察者模式(读书笔记)

    观察者模式是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。这个模式在很多场景下都有广泛的应用,例如事件处理、...

    设计模式之美—学习笔记

    在这个“设计模式之美”的学习笔记中,我们将探讨一些主要的设计模式,以及它们在实际开发中的应用。 首先,我们从创建型模式开始。这类模式主要用于对象的创建,如单例模式(Singleton)、工厂模式(Factory ...

    尚硅谷设计模式源码笔记课件.zip

    行为型模式:模版方法模式、命令模式、访问者模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式(Interpreter模式)、状态模式、策略模式、职责链模式(责任链模式) 2) 学习目标:通过学习,学员...

    根据《JAVA与设计模式》整理的笔记及示例代码

    这份"根据《JAVA与设计模式》整理的笔记及示例代码"涵盖了Java语言和设计模式的核心概念,旨在帮助开发者理解和应用这些模式。 一、设计模式的基本概念 设计模式是对在特定情境下软件设计问题的解决方案的一种描述...

    设计模式读书笔记

    首先,设计模式可以分为三大类:创建型、结构型和行为型。创建型设计模式关注的是对象的创建,如工厂方法、抽象工厂、建造者、原型和单例模式,它们分别处理不同程度的对象创建延迟和实例化过程。结构型模式则涉及...

    设计模式学笔记

    ### 设计模式学习笔记 #### 一、设计模式概述 设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它描述了在软件设计过程中的一些不断重复发生的问题,以及该问题的解决方案。设计...

    台湾人写的设计模式笔记

    这份由台湾作者编写的笔记,结合Java语言,为读者提供了一种深入理解并应用设计模式的方式。以下是对这些设计模式的详细解释: 1. **创建型模式(Creational Patterns)** 创建型模式关注于对象的创建过程,它们帮助...

    观察者模式笔记1

    观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于实现事件驱动编程或者...

    HeadFirst设计模式笔记

    《HeadFirst设计模式笔记》是深入理解软件设计思想的一份宝贵资料,主要涵盖了设计模式这一核心编程概念。设计模式是经过实践验证的解决方案模板,用于解决在软件开发中经常遇到的问题,尤其在面向对象设计中。这篇...

    JS设计模式笔记和代码

    4. **发布/订阅(观察者)模式**:这是一种行为型设计模式,它定义了对象之间的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。在JavaScript中,可以使用EventEmitter或Promise...

    C#设计模式学习笔记

    设计模式通常分为三类:创建型模式(如工厂模式、单例模式、建造者模式)、结构型模式(如适配器模式、装饰器模式、代理模式)和行为型模式(如策略模式、观察者模式、迭代器模式)。每种模式都有其特定的应用场景...

    面向对象与设计模式基础笔记

    - **观察者模式**:定义了一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。 - **策略模式**:定义了一系列算法,并将每一个算法封装起来,使它们可以相互替换。 - **...

    23种设计模式学习笔记及源码

    这个压缩包文件包含了23种设计模式的学习笔记和源码,旨在帮助开发者深入理解并熟练运用这些模式。以下是对每种设计模式的详细解释,以及它们在Java编程中的应用。 1. **单例模式**:确保一个类只有一个实例,并...

    设计模式教程及笔记

    首先,我们要了解设计模式的三大分类:创建型模式、结构型模式和行为型模式。创建型模式关注对象的创建过程,如单例模式、工厂模式、建造者模式和原型模式等,它们旨在提供灵活的、扩展性强的对象创建方式。结构型...

Global site tag (gtag.js) - Google Analytics