java中观察者模式的使用场景
观察者模式 是一种非常经典 非常常用的设计模式。
一个对象的行为 依赖于 另一个对象的状态。或者换一种说法,当被观察对象(目标对象)的状态发生改变时 ,会直接影响到观察对象的行为。
特点一 : 被观察者 和观察者 一般是 一对多的关系,一个被观察者 对应多个观察者,当一个被观察者的状态发生改变时,被观察者通知观察者, 然后可以在观察者内部 进行业务逻辑的处理。
JDK 提供了 一套 观察者模式的实现,在java.util包中, java.util.Observable类和java.util.Observer接口。Observable是被观察者,Observer是观察者。
下边是被观察者 的属性和方法 介绍
1
2
3
4
5
6
7
8
9
10
11
12
13
|
Class Observable {
obs : Vector // 观察者列表
addObserver(Observer o) //添加观察者
deleteObserver(Observer o) // 删除观察者
notifyObservers() // 通知观察者, 回调 观察者的 update()方法
notifyObservers(Object arg)
}
|
下边是观察者的介绍,观察者会实现Observer借口,重写update方法,然后把观察者 注入到被观察者中
1
2
3
4
5
|
Interface Observer {
public void update(Event evt);
}
|
下面是想到的 一个具体的应用场景。
涉及到3个类 ,订单类、事件类、工单类、
订单类 包含 id,state 属性,state 1代表 开启,0代表关闭。
事件类 包括 id,allowClose 属性,allowClase 代表 是否可关闭。
当订单状态 发生改变 即 关闭时,订单关联的工单 和事件 也就可以关闭了,否则 如果订单状态时 开启的, 则不允许 关闭 对应的 工单和事件。
本文出自 “JAVA那些事儿” 博客,请务必保留此出处http://1027187712.blog.51cto.com/5509347/1743743
java中观察者模式的使用场景相关推荐
- redis 在java中的实例使用场景
redis 是一种Nosql缓存技术,它存储的都是序列化之后的数据.在java中使用redis的话需引入一个辅助jar,本文用的是jedis-2.9.0.jar. 由于项目中用到了log4j,所有还需 ...
- Java中WeakHashMap的应用场景
WeakHashMap是啥: WeakHashMap和HashMap都是通过"拉链法"实现的散列表.它们的源码绝大部分内容都一样,这里就只是对它们不同的部分就是说明. WeakRe ...
- Java中泛型的使用场景
泛型: 泛型是JDK 1.5的一项新特性,它的本质是参数化类型(Parameterized Type)的应用,也就是说所操作的数据类型被指定为一个参数,在用到的时候在指定具体的类型.这种参数类型可以用 ...
- 深入分析 Java 中的中文编码问题--转
几种常见的编码格式 为什么要编码 不知道大家有没有想过一个问题,那就是为什么要编码?我们能不能不编码?要回答这个问题必须要回到计算机是如何表示我们人类能够理解的符号的,这些符号也就是我们人类使用的语言 ...
- 【JAVA编码专题】深入分析 Java 中的中文编码问题
http://www.ibm.com/developerworks/cn/java/j-lo-chinesecoding/ 几种常见的编码格式 为什么要编码 不知道大家有没有想过一个问题,那就是为什么 ...
- 深入分析 Java 中的中文编码问题 (文章来自网络)
许令波,developerWorks 中国网站最佳作者,现就职于淘宝网,是一名 Java 开发工程师.对大型互联网架构设计颇感兴趣,喜欢钻研开源框架的设计原理.有时间将学到的知识整理成文章,也喜欢记录 ...
- 深入分析 Java 中的中文编码问题(键人岐)
编码问题一直困扰着开发人员,尤其在 Java 中更加明显,因为 Java 是跨平台语言,不同平台之间编码之间的切换较多.本文将向你详细介绍 Java 中编码问题出现的根本原因,你将了解到:Java 中 ...
- Java 中的中文编码问题(非常详细)
只要有跨应用数据交换的地方,都可能产生编码和解码. 出现乱码问题唯一的原因都是在 char 到 byte 或 byte 到 char 转换中编码和解码的字符集不一致导致的. 几个常用的类: Strin ...
- 深入分析 Java 中的中文编码问题(1)
几种常见的编码格式 为什么要编码 不知道大家有没有想过一个问题,那就是为什么要编码?我们能不能不编码?要回答这个问题必须要回到计算机是如何表示我们人类能够理解的符号的,这些符号也就是我们人类使用的语言 ...
- 呕心整理Java中的12种常用设计模式以及应用场景
目录 单例模式 饿汉模式 懒汉模式 线程锁模式 双重判断模式 静态内部类模式 策略模式 工厂模式 简单工厂 抽象工厂 门面模式 装饰器模式 责任链模式 享元模式 观察者模式 代理模式 静态代理模式 动 ...
最新文章
- Java实现简单的RPC框架
- 华为TE30点对点呼叫TE40提示不允许使用ip地址呼叫如何解决?
- 2.11 计算机视觉现状-深度学习第四课《卷积神经网络》-Stanford吴恩达教授
- 2012年度最受欢迎中国开源软件评选
- 逻辑地址、线性地址、物理地址和虚拟地址
- 【转】java 自动装箱与拆箱
- 你真的知道 NoSuchMethodError 发生原因和解决办法吗
- HTML5编程实战之二:用动画的形式切换图片
- 给1-3年的前端 6 点诚心建议
- 使用 mybatis + flying + 双向相关建模 的电商后端
- 【Spring】Spring 依赖注入之手动注入
- 华为鸿蒙os正在国外小规模测试,华为鸿蒙OS正小规模测试
- mysql 导出过长的数字列时变科学计数法问题解决办法
- 【个人笔记】OpenCV4 C++ 快速入门 02课
- 深度学习处理概率分布中常用的函数
- 电商系统如何实现订单超时自动取消?
- 中国知网如何下载外文文献
- matlab范德蒙,matlab有效生成范德蒙多矩阵
- 用计算机计算数学公式,Formula Calculator公式计算器
- H3C无线AP 瘦模式转胖模式 fit转fat
热门文章
- mindoc快速搭建教程
- 第十届国家级大学生创新训练项目——3D打印技术在建筑构部件生产中的应用
- 文电通:助力企业入局“无纸化办公”!
- 30岁了开始自学编程,家里比较困难还来得及吗?
- 软件系统怎么做版本管理?
- 关于RGB888和RGB565互转代码实现方案推荐
- NXP MPC574X eTimer
- 计算机d盘无法格式化,为什么不能格式化D盘?D盘无法格式化的解决方法
- thinkpad x250装黑苹果教程_GitHub - siweijianrong/Hackintosh: Hackintosh黑苹果长期维护机型EFI及安装教程整理...
- 如何把谷歌浏览器设置成全黑主题