标签:观察者模式 observer 监听器的底层实现 observable 群发消息 转发机制
1、观察者模式的简单介绍:
a、核心:
- 观察者模式主要用于 1 : N 的通知中。当一个对象(目标对象 Subject 或者 Objservable )的状态变化时,他需要及时告知一系列的对象(观察者对象,Observer),令他们做出响应。
b、通知观察者的方式:
推:每次都会把通知以广播的方式发送给所有的观察者,所有的观察者只能够被动接收。
拉:观察者只要知道有情况即可。至于什么时候获取内容,获取什么内容,都可以自主决定。
2、简单的代码演示:
a、Subject 类为目标对象类(相当于一个容器,里面存放了一些的观察者对象),提供了在主题对象中注册观察者对象的方法。ConcreteSubject 为具体的主题对象,里面提供了一个 stateCode 的成员变量,并且在 setStateCode() 方法中使用父类的 notifyAllObserver() 方法。
b、创建 Observer 接口,即抽象的观察者类,并创建一个实现了该接口的 ConcreteObserver 类。(在该类中也有一个 stateCode 的成员变量)
c、看看 Client16 测试类中的输出结果以及示例代码的类图关系。
3、使用 javase 提供的 java.util.Observable 和 java.util.Observer 来实现观察者模式:
-Observable 类是目标类,Observer 接口是观察者接口,ConcreteSubject 是具体目标类,ConcreteObserver 是具体观察者类,使用 已经封装好的方法来实现我们的观察者模式。
4、开发中常见的场景:
- 聊天室程序的,服务器转发给所有客户端
- 网络游戏(多人联机对战)场景中,服务器将客户端的状态进行分发
- 邮件订阅
- Servlet 中,监听器的实现
- Android 中,广播机制
本文出自 “12392717” 博客,请务必保留此出处http://12402717.blog.51cto.com/12392717/1930067
标签:观察者模式 observer 监听器的底层实现 observable 群发消息 转发机制
原文地址:http://12402717.blog.51cto.com/12392717/1930067