定义

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内置的模式

主题类

 1import java.util.Observable;
 2
 3/** *//**
 4 * 观察者模式学习 (主题类)
 5 * 
 6 * @author sunwei
 7 * 
 8 */
 9public class MyObservable extends Observable
10{
11    public void setName(String name)
12    {
13        setChanged();
14        notifyObservers();
15    }
16}
17

观察者类1

 1 package com.ztgame.pattern;
 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

 1 package com.ztgame.pattern;
 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 }

组织协调类

 1 public class LearnOb
 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-观察者模式相关推荐

  1. 设计模式学习(二): 观察者模式 (C#)

    <深入浅出设计模式>学习笔记第二章 需求: 开发一套气象监测应用,如图: 气象站,目前有三种装置,温度.湿度和气压感应装置. WeatherData对象追踪气象站的数据,并更新到布告板,布 ...

  2. Unity3D设计模式学习之观察者模式(二)

    上一篇简单的写了观察者模式例子和实现思路,对观察者模式只是有了大致的了解,设计模式一般都比较抽象,实际运用需要根据需求来设计.重构,这篇就看看书上的例子,加深理解. 实现说明 游戏事件系统的实现 // ...

  3. 设计模式学习笔记-观察者模式(转)

    http://www.cnblogs.com/wangjq/archive/2012/07/12/2587966.html 1. 概述 有时被称作发布/订阅模式,观察者模式定义了一种一对多的依赖关系, ...

  4. 设计模式学习笔记-观察者模式

    1. 概述 有时被称作发布/订阅模式,观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象.这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己. 2. ...

  5. Unity3D 设计模式学习之观察者模式

    游戏里成就系统可以使用观察者模式.要实现成就系统之前,一般需要企划单位先将需要的成就事件列出来,并在项目完成到某个段落之后,才开始加入实现开发中. 大致实现逻辑: 先定义"游戏事件" ...

  6. Java-马士兵设计模式学习笔记-观察者模式-读取properties文件改成单例模式

    一.概述 1.目标:读取properties文件改成单例模式 二.代码 1.Test.java 1 class WakenUpEvent{ 2 3 private long time; 4 priva ...

  7. Java设计模式学习02——工厂模式

    工厂模式 工厂模式主要是为创建对象提供接口,将创建对象的过程隔离起来,实现了创建者与调用者的分离,提高了程序的灵活性.  核心本质: 实例化对象,用工厂方法代替new操作. 将选择实现类.创建对象统一 ...

  8. 设计模式学习--观察者模式(Observer Pattern)

    设计模式学习--观察者模式(Oberser Pattern) 2013年5月18日 天气:热!  下午15:28  设计模式学习中 学习者:小巫 什么是观察者模式? 定义了对象之间的一对多依赖,这样一 ...

  9. 36设计模式学习笔记

    设计模式学习笔记 文章目录 0.设计模式简介 1.单例模式 2.工厂方法 3.抽象工厂 4.责任链模式 5.模板方法 ok 一.模板方法简介 二.模式的定义和特点 三.模式的结构和实现 四.什么是模板 ...

  10. 7 种 Javascript 常用设计模式学习笔记

    7 种 Javascript 常用设计模式学习笔记 由于 JS 或者前端的场景限制,并不是 23 种设计模式都常用. 有的是没有使用场景,有的模式使用场景非常少,所以只是列举 7 个常见的模式 本文的 ...

最新文章

  1. smack+openfire实现Android实时通信(实现大部分基本功能)
  2. ASP.NET Core 运行原理解剖[4]:进入HttpContext的世界
  3. 非对称加密 公钥私钥_选择Java加密算法第3部分–公钥/私钥非对称加密
  4. UVA1586 ​​​​​​​ Molar mass
  5. Win32环境下动态链接库(DLL)编程原理
  6. 【2020模拟考试T5】【PAT乙】1035 插入与归并 (25分) 两种排序的sort写法
  7. 内网渗透中wmic的使用
  8. Flash | 用几张帧图创建逐帧动画元件并插入场景层的一般步骤
  9. Emulex光纤卡lpfc配置文件的修改
  10. 如何提高页面性能并充分利用主机
  11. 免费Web托管公司000Webhost被黑 1350万明文密码泄露
  12. Linux - Assuming drive cache:write througu /dev/sda1 contains a file system with errors,check forced
  13. oracle userenv('language'),USERENV()获取Oracle环境信息
  14. 使用 Jenkins 创建微服务应用的持续集成
  15. 单元测试:桌面检查、走查方式、代码审查
  16. 九连环问题(Java)
  17. word 中Visio画的图 如何修改?图片排列
  18. C++基本功和 Design Pattern系列 Operator 下
  19. Mac book笔记本输入法错乱
  20. DDD 领域驱动设计 - 架构(分层/六边形/RESTful)

热门文章

  1. 修改PHP上传文件的大小限制(post)
  2. [HAOI2007] 修筑绿化带
  3. 网上支付(支付宝/银联)
  4. DB2分区表删除和添加分区
  5. [原]解决百度地图多个Marker和InfoWindow时总是打开最后一个InfoWindow的问题
  6. sublime text 使用小技巧
  7. Jquery实现全选反选和省城市联动效果
  8. (一)数据结构和算法、线性结构
  9. HBuilder实现WiFi调试Android
  10. SPOJ Qtree系列