【设计模式】Java设计模式第一课之观察者模式

我们可以用一个生活中的情景来认识一下观察者模式.

在这个时代,可能只有我们家里的老年人还保留着每天看报纸的习惯.报社负责生产内容,把它们组织到一张报纸上,每天进行印刷,然后送到每一个花钱订阅了报纸的用户家里.这样老人家就可以浏览一下每天发生的事情了.

这就是观察者模式最贴切的比喻.订阅者和报社是一对多的关系,每天只要更新了内容,就会统一把报纸送到用户的手里,当然,如果你不想订阅了,也可以退订.报社不知道你的状态,也不会关心你到底有没有看报纸,它的职责就是每天准时的把报纸送到你的家里.

下面是我看书的时候,总结的关于观察者模式的几个要点:

  • 设计原则:为了交互对象之间的松耦合而努力.
  • 定义了对象之间的一对多依赖,这样一来,当一个对象发生了改变时,它的所有依赖者都会受到通知并自动更新.
  • 观察者模式提供了一种对象设计,让可观察者和观察者之间松耦合.
  • 可观察者是有状态的
  • 可观察者用一个共同的接口来更新观察者
  • 可观察者不知道观察者的细节,只知道观察者实现了观察者接口
  • 松耦合的设计之所以能让我们建立有弹性的OO系统,能够应对变化,是因为对象之间的互相依赖降到了最低.
  • Java有内置的观察者模式,在Java.util包中的Observer接口和Observable类,可以使用推和拉两种方式
  • 要认识到Java内置的观察者模式的局限性,因为Observer是一个类,而不是一个接口
  • MVC模式是观察者模式的最佳代表
  • 观察者模式也被应用于JavaBeans,RMI中.
时间: 2024-10-13 21:58:19

【设计模式】Java设计模式第一课之观察者模式的相关文章

课堂随笔"Java"的第一课JDK的下载,安装和配置

前言:学习JAVA编程的第一步就是安装JDK,这是JAVA开发和安卓开发的第一步.下面就教大家如何从官网下载安装JDK,并测试是否安装成功. 一.JDK的下载 地址:http://www.oracle.com/cn 1.鼠标悬浮在下载上.然后在点击选择Java SE 2.先点击Java SE,再选择下载栏,然后点击进去下载目录 3.进入下载目录先选择 "接受许可协议" 不然官方是不会允许下载的.然后在找到对应的电脑系统和操作系统进行下载 二.JDK的安装 1.先选择开发工具,然后选择安

Java反射第一课认识Class类

Class类 1.在面向对象的世界里,万事万物皆对象 (1)先来理解两个问题: (1)Java语音中,静态的成员,普通数据类型是不是对象? [普通的数据类型int a = 5 不是面向对象的,但是它有包装类弥补了] [java静态的东西不是面向对象的,静态的东西不是某个对象的他是属于类的] 所以在面向对象的世界里,万事万物皆对象 (2)类是谁的对象? 类是对象,类是java.lang.Class类的实例对象 Class类的实例对象是什么?---我们每一个对象所属的类就是Class类的实例对象(也

从C++转向Java的第一课

序:计算机语言的学习,最快捷的方法是从一种语言映射到另一种语言.Java和C++作为最通用的面相对象高级语言,不论从语法或者编程上都极具相似性和可效仿行,这里的可效仿包括——语法理解可效仿和编程规范可效仿.本篇将针对Java语言,作重点牵引. Java开发环境配置 1 安装JDK 版本:jdk1.6.0_27 配置用户变量: a.新建 JAVA_HOME C:\Program Files (x86)\Java\jdk1.6.0_27 (JDK的安装路径) b.新建 PATH %JAVA_HOME

java自学第一课:安装jdk,写第一条java程序

一.安装jdk 二.写第一条java程序 三.认识jdk JDK 是整个Java的核心,包括了Java运行环境,Java工具和Java基础的类库. JDK包含的基本组件包括: javac – 编译器,将源程序转成字节码 jar – 打包工具,将相关的类文件打包成一个文件 javadoc – 文档生成器,从源码注释中提取文档 jdb – debugger,查错工具 java – 运行编译后的java程序(.class后缀的) appletviewer:小程序浏览器,一种执行HTML文件上的Java

Unity设计模式+Java设计模式,讲解+案例+PPT,一次性学会设计模式,拥抱高薪!

一个程序员对设计模式的理解:“不懂”为什么要把很简单的东西搞得那么复杂.后来随着软件开发经验的增加才开始明白我所看到的“复杂”恰恰就是设计模式的精髓所在,我所理解的“简单”就是一把钥匙开一把锁的模式,目的仅仅是着眼于解决现在的问题,而设计模式的“复杂”就在于它是要构造一个“万能钥匙”,目的是提出一种对所有锁的开锁方案.在真正理解设计模式之前我一直在编写“简单”的代码.这个“简单”不是功能的简单,而是设计的简单.简单的设计意味着缺少灵活性,代码很钢硬,只在这个项目里有用,拿到其它的项目中就是垃圾,

JAVA学习第一课

                                          JAVA概述 首先先复习一下基础常识: 1.软件开发 2.人机交互 3.常用的DOS命令 一.软件开发 什么是软件? 软件是一系列按照特定顺序组织的计算机数据和指令集合(指令:是处理数据的方式) 常见的软件有:系统软件(DOS.WIndows.Linux),应用软件(QQ.360.迅雷) 所以,软件开发就是指制作软件,将一系列的数据和集合组织起来 二.人机交互 软件使人和计算机更好的交互 交互方式: 1.图形化界

java 学习第一课,JDK工具包的安装

1. jdk 的下载 目前为止,jdk的最新版是jdk8,http://www.oracle.com/technetwork/java/javase/downloads/index.html 到这里下载  目前我用的是win7 64位操作系统,所以下载如下这个连接: 2. JDK 8 的安装 安装时,对话框 会先让你安装 JDK,我选择 E:\java\jdk8 这个安装好之后,会让你再选择一个目标文件夹,用于安装JRE, 这里要注意的是,不能与之前的JDK安装在一个目录中,否则环境变量将设置不

JAVA学习第一课(初识JAVA)

PS:退ACM集训队了,自己也疯玩了两天,后天就开学了,就正式大二了,该收收心好好学习啦                                                                                  JAVA概述 首先先复习一下基础常识: 1.软件开发 2.人机交互 3.经常使用的DOS命令 一.软件开发 什么是软件? 软件是一系列依照特定顺序组织的计算机数据和指令集合(指令:是处理数据的方式) 常见的软件有:系统软件(DOS.WIndows.

java程序设计第一课

对象: 拥有状态,行为,标识 万物都是对象 对象通过发送消息来调用对方 每个对象可以拥有其他对象 每个对象都有一个接口 每个对象都提供服务,通过调用其他对象提供的服务来实现这一目的 隐藏实现对象 2个角色:类的创建者,客户端程序员(类消费者) 隐藏目的:创建类,只向客户端程序员暴露必须的部分,隐藏其他部分 访问控制:public private,protected 复用:将类的一个对象置于某个新的类中,成为组合 继承:复用接口 以现有类为基础,复制它,子类拥有父类的一切行为 软件设计用UML类图