设计模式学习笔记3:用于系统解藕的Observer

学习Observer是因为它和Mediator有相似的地方,它的意图是:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖它的对象都得到通知并被自动更新。

这个模式让我想起以前做过的一个统计分析系统,一个窗体上有数字数据和多种图示,当数据改变时,数字数据和图示都会实时根着改变。只是我根本不需要手动的去创建subject和observer类代码维护这种关系,因为观察者(图表)共同拥有一个目标DataSource(连到DataSet),这是Delphi为我们减轻了工作!RAD并不能代替我们做所有的事情,像项目中的界面主题应用等就需要写代码去处理了。

Observer常用于MVC结构中处理Model(作为subject)和View(作为observer)之间的关系。当一个observer拥有多个subject时,这种情况相对比较复杂。尤其是subject与observer之间的依赖关系特别复杂时,还需要引入一个维护关系的对象(ChangeManager),它的目的是尽量减少观察者反映其目标的状态变化所需的工作量,而ChangeManager可以是一个Mediator模式的实例。通常只有一个ChangeManager,所以Singleton模式又可以派上用场!

Mediator模式是将对象与对象间的通信进行封装,集中处理,容易理解。而Observer模式是通过引入observer和subject对象来分布通信,由于这种耦合,更容易复用;但它们的连接是复杂的,使用系统难于理解。

通过这次学习,对于Observer模式我还不能完全驾驭,正如作者所说,一次是不能完全掌握的!鉴于行为型模式(已学习Mediator和Observer)相对创建型与结构型比较复杂,调整一下学习顺序,还是从结构型和创建型模式入手!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值