设计模式学习02-观察者模式
定义
The Observer pattern defines a one-to-many dependency between objects so that when one changes state, all of its dependents are notified and updated automatically.
观察者模式定义了对象之间的一对多的依赖关系,这样当一个对象的状态发生改变时,依赖它的那些对象将会被通知到,会自动更新自己的状态.
说明
观察者(Observer)模式又名发布-订阅(Publish/Subscribe)模式。做软件开发的经常会订阅邮件列表,这其实也是一种观察者(Observer)模式。Java的API提供了对这一模式的原生支持,为我们提供了Observer接口和Observable类来实现所谓观察者模式。
图示
使用Java内置的模式
主题类
![](/assets/blank.gif)
2
![](/assets/blank.gif)
3
![](/assets/blank.gif)
![](/assets/blank.gif)
4
![](/assets/blank.gif)
5
![](/assets/blank.gif)
6
![](/assets/blank.gif)
7
![](/assets/blank.gif)
8
![](/assets/blank.gif)
9
![](/assets/blank.gif)
10
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
11
![](/assets/blank.gif)
12
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
13
![](/assets/blank.gif)
14
![](/assets/blank.gif)
15
![](/assets/blank.gif)
16
![](/assets/blank.gif)
17
![](/assets/blank.gif)
观察者类1
2
3 import java.util.Observable;
4 import java.util.Observer;
5 /**
6 * 观察者1
7 *
8 * @author sunwei
9 *
10 */
11 public class Observer1 implements Observer
12 {
13 @Override
14 public void update(Observable o, Object arg)
15 {
16 System.out.println("我是观察者1,我收到了我订阅的主题!");
17 }
18 }
观察者类2
2
3 import java.util.Observable;
4 import java.util.Observer;
5 /**
6 * 观察者2
7 *
8 * @author sunwei
9 *
10 */
11 public class Observer2 implements Observer
12 {
13 @Override
14 public void update(Observable o, Object arg)
15 {
16 System.out.println("我是观察者2,我也收到了主题信息!");
17 }
18 }
组织协调类
2 {
3 public static void main(String[] args)
4 {
5 // 主题,被观察者
6 MyObservable observable = new MyObservable();
7 observable.addObserver(new Observer1());
8 observable.addObserver(new Observer2());
9 observable.setName("changed");
10 }
11 }
转载于:https://www.cnblogs.com/51cto/archive/2009/03/17/1414699.html
设计模式学习02-观察者模式相关推荐
- 设计模式学习(二): 观察者模式 (C#)
<深入浅出设计模式>学习笔记第二章 需求: 开发一套气象监测应用,如图: 气象站,目前有三种装置,温度.湿度和气压感应装置. WeatherData对象追踪气象站的数据,并更新到布告板,布 ...
- Unity3D设计模式学习之观察者模式(二)
上一篇简单的写了观察者模式例子和实现思路,对观察者模式只是有了大致的了解,设计模式一般都比较抽象,实际运用需要根据需求来设计.重构,这篇就看看书上的例子,加深理解. 实现说明 游戏事件系统的实现 // ...
- 设计模式学习笔记-观察者模式(转)
http://www.cnblogs.com/wangjq/archive/2012/07/12/2587966.html 1. 概述 有时被称作发布/订阅模式,观察者模式定义了一种一对多的依赖关系, ...
- 设计模式学习笔记-观察者模式
1. 概述 有时被称作发布/订阅模式,观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象.这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己. 2. ...
- Unity3D 设计模式学习之观察者模式
游戏里成就系统可以使用观察者模式.要实现成就系统之前,一般需要企划单位先将需要的成就事件列出来,并在项目完成到某个段落之后,才开始加入实现开发中. 大致实现逻辑: 先定义"游戏事件" ...
- Java-马士兵设计模式学习笔记-观察者模式-读取properties文件改成单例模式
一.概述 1.目标:读取properties文件改成单例模式 二.代码 1.Test.java 1 class WakenUpEvent{ 2 3 private long time; 4 priva ...
- Java设计模式学习02——工厂模式
工厂模式 工厂模式主要是为创建对象提供接口,将创建对象的过程隔离起来,实现了创建者与调用者的分离,提高了程序的灵活性. 核心本质: 实例化对象,用工厂方法代替new操作. 将选择实现类.创建对象统一 ...
- 设计模式学习--观察者模式(Observer Pattern)
设计模式学习--观察者模式(Oberser Pattern) 2013年5月18日 天气:热! 下午15:28 设计模式学习中 学习者:小巫 什么是观察者模式? 定义了对象之间的一对多依赖,这样一 ...
- 36设计模式学习笔记
设计模式学习笔记 文章目录 0.设计模式简介 1.单例模式 2.工厂方法 3.抽象工厂 4.责任链模式 5.模板方法 ok 一.模板方法简介 二.模式的定义和特点 三.模式的结构和实现 四.什么是模板 ...
- 7 种 Javascript 常用设计模式学习笔记
7 种 Javascript 常用设计模式学习笔记 由于 JS 或者前端的场景限制,并不是 23 种设计模式都常用. 有的是没有使用场景,有的模式使用场景非常少,所以只是列举 7 个常见的模式 本文的 ...
最新文章
- smack+openfire实现Android实时通信(实现大部分基本功能)
- ASP.NET Core 运行原理解剖[4]:进入HttpContext的世界
- 非对称加密 公钥私钥_选择Java加密算法第3部分–公钥/私钥非对称加密
- UVA1586 ​​​​​​​ Molar mass
- Win32环境下动态链接库(DLL)编程原理
- 【2020模拟考试T5】【PAT乙】1035 插入与归并 (25分) 两种排序的sort写法
- 内网渗透中wmic的使用
- Flash | 用几张帧图创建逐帧动画元件并插入场景层的一般步骤
- Emulex光纤卡lpfc配置文件的修改
- 如何提高页面性能并充分利用主机
- 免费Web托管公司000Webhost被黑 1350万明文密码泄露
- Linux - Assuming drive cache:write througu /dev/sda1 contains a file system with errors,check forced
- oracle userenv('language'),USERENV()获取Oracle环境信息
- 使用 Jenkins 创建微服务应用的持续集成
- 单元测试:桌面检查、走查方式、代码审查
- 九连环问题(Java)
- word 中Visio画的图 如何修改?图片排列
- C++基本功和 Design Pattern系列 Operator 下
- Mac book笔记本输入法错乱
- DDD 领域驱动设计 - 架构(分层/六边形/RESTful)