观察者模式( Observer Pattern)

文档地址:《设计模式之禅》​​​​​​​

切入故事: 韩非子身边的卧底是谁派来的

定义: Define a one-to-many dependency between objects so that when one object changes state,all its dependents are notified and updated automatically.(定义对象间一种一对多的依赖关系, 使得每当一个对象改变状态, 则所有依赖于它的对象都会得到通知并被自动更新。 )

通用类图:

                

                ● Subject被观察者

                        定义被观察者必须实现的职责, 它必须能够动态地增加、 取消观察者。 它一般是抽象类或者是实现类, 仅仅完成作为被观察者必须实现的职责: 管理观察者并通知观察者。

                ● Observer观察者

                        观察者接收到消息后, 即进行update(更新方法) 操作, 对接收到的信息进行处理。

                ● ConcreteSubject具体的被观察者

                        定义被观察者自己的业务逻辑, 同时定义对哪些事件进行通知。

                ● ConcreteObserver具体的观察者

                        每个观察在接收到消息后的处理反应是不同, 各个观察者有自己的处理逻辑。

优点:

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

                 ● 建立一套触发机制

缺点:

                 开发效率和运行效率问题

使用场景:

                ● 关联行为场景。 需要注意的是, 关联行为是可拆分的, 而不是“组合”关系。

                ● 事件多级触发场景。

                ● 跨系统的消息交换场景, 如消息队列的处理机制。

扩展:

                EJB中的 MessageDriven Bean(一般简称为MDB) , 消息驱动Bean 消息的发布者(Provider) 发布一个消息, 也就是一个消息驱动Bean, 通过EJB容器(一般是Message Queue消息队列) 通知订阅者做出回应

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值