《设计模式之禅》笔记17 -- 观察者模式

定义:也叫发布订阅模式。定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知


并被自动更新。


一、观察者模式的四个角色


1. 被观察者


2. 观察者


3. 具体的被观察者


4. 具体的观察者


二、观察者模式的优点


1. 观察者和被观察者之间是抽象耦合


2. 建立一套触发机制


三、观察者模式的缺点


需要考虑开发效率和运行效率问题,一个观察者卡住,会影响整体的执行效率。一般采用异步的方式解决此问题。


四、观察者模式的使用场景


1. 关联行为的场景。关联行为是可拆分的,而不是“组合”关系


2. 事件多级触发场景


3. 跨系统的消息交换场景,例如消息队列的处理机制


五、观察者模式的注意事项


1. 广播链的问题。在一个观察者模式中最多出现一个对象既是观察者又是被观察者。


它和责任链模式的最大区别就是观察者广播链在传播的过程中消息是随时更改的,它是由相邻的两个节点协商的消息结构;责任链


模式在消息传递过程中基本上保持消息不可变。


2. 异步处理问题。EJB是一个很好的例子。可以看看Message Queue


六、观察者模式的扩展


1. Java世界中的观察者模式。java.util.Observable和java.util.Observer接口是jdk提供的观察者和被观察者的实现类和接口。


2. 项目中真实的观察者模式。系统设计中会对观察者模式做改造,主要包含3个方面


   1) 观察者和被观察者之间的消息沟通。观察者中的update方法接受两个参数:一是被观察者,二是DTO(Data Transfer Object


,数据传输对象),DTO是一个JavaBean,由被观察者生成,供观察者使用


   2) 观察者响应方式。快速响应,使用异步线程或缓存的方式。


   3) 被观察者尽量自己做主。对被观察者的业务逻辑方法实现重载,决定是否通知观察者。


3. 订阅发布模型。EJB中有三个Bean:Session Bean, Entity Bean, MessageDriven Bean。


七、最佳实践


常见场景:文件系统、猫鼠游戏、ATM取钱、广播收音机
一、综合实战—使用极轴追踪方式绘制信号灯 实战目标:利用对象捕捉追踪和极轴追踪功能创建信号灯图形 技术要点:结合两种追踪方式实现精确绘图,适用于工程制图中需要精确定位的场景 1. 切换至AutoCAD 操作步骤: 启动AutoCAD 2016软件 打开随书光盘中的素材文件 确认工作空间为"草图与注释"模式 2. 绘图设置 1)草图设置对话框 打开方式:通过"工具→绘图设置"菜单命令 功能定位:该对话框包含捕捉、追踪等核心绘图辅助功能设置 2)对象捕捉设置 关键配置: 启用对象捕捉(F3快捷键) 启用对象捕捉追踪(F11快捷键) 勾选端点、中心、圆心、象限点等常用捕捉模式 追踪原理:命令执行时悬停光标可显示追踪矢量,再次悬停可停止追踪 3)极轴追踪设置 参数设置: 启用极轴追踪功能 设置角度增量为45度 确认后退出对话框 3. 绘制信号灯 1)绘制圆形 执行命令:"绘图→圆→圆心、半径"命令 绘制过程: 使用对象捕捉追踪定位矩形中心作为圆心 输入半径值30并按Enter确认 通过象限点捕捉确保圆形位置准确 2)绘制直线 操作要点: 选择"绘图→直线"命令 捕捉矩形上边中点作为起点 捕捉圆的上象限点作为终点 按Enter结束当前直线命令 重复技巧: 按Enter可重复最近使用的直线命令 通过圆心捕捉和极轴追踪绘制放射状直线 最终形成完整的信号灯指示图案 3)完成绘制 验证要点: 检查所有直线是否准确连接圆心和象限点 确认极轴追踪的45度增量是否体现 保存绘图文件(快捷键Ctrl+S)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值