java设计模式-观察者模式(广播机制,消息订阅)
什么叫观察者模式:
观察者模式是广播机制,消息订阅和推送的核心设计。
开发中常见的场景:
1.手机中消息推送
2.后台群发信息
观察者模式例子(自己实现)
首先是定义观察者接口并使用三个子类实现
/*** 观察者接口* * @author liuxg* @date 2016年5月27日 下午10:15:30*/
public interface IObserver {public void process();}class Observer1 implements IObserver {@Overridepublic void process() {System.out.println("Observer1执行动作");}}
class Observer2 implements IObserver {@Overridepublic void process() {System.out.println("Observer2执行动作");}}
class Observer3 implements IObserver {@Overridepublic void process() {System.out.println("Observer3执行动作");}}
再定义主题,观察者若想获得消息,必须先注册
/*** * @author liuxg* @date 2016年5月27日 下午10:12:18*/
public class Subject {List<IObserver> list = new ArrayList<IObserver>();/**** 注册观察者* @param observer*/public void registerObserver(IObserver observer){list.add(observer);}/*** 广播消息*/public void send(){ for (IObserver observer : list) {observer.process();}}}
客户端这样子,我们这样子使用
public class Client01 {public static void main(String[] args) {IObserver observer1 = new Observer1();IObserver observer2 = new Observer2();IObserver observer3 = new Observer3();Subject subject = new Subject();subject.registerObserver(observer1);subject.registerObserver(observer2);subject.registerObserver(observer3);subject.send();}}
接下来我们利用jdk的api来实现观察者模式
观察者模式例子(jdk api)
/*** 实现观察者* @author liuxg* @date 2016年5月28日 下午7:11:43*/
public class MyObserver implements Observer {@Overridepublic void update(Observable o, Object arg) {int state = ((ConcreteSubject)o).getState();System.out.println("state = " + state);}}
接下来我们来实现主题信息
/*** 继承jdk的Observable来实现主题信息* @author liuxg* @date 2016年5月28日 下午7:10:52*/
public class ConcreteSubject extends Observable{private int state ;public void set(int state) { //状态切换,广播信息this.state = state;setChanged();notifyObservers();}public int getState() {return state;}public void setState(int state) {this.state = state;}
}
客户端测试,可以这样子
public class Client02 {public static void main(String[] args) {ConcreteSubject obj = new ConcreteSubject();MyObserver observer = new MyObserver();obj.addObserver(observer);obj.set(123);}}
java设计模式-观察者模式(广播机制,消息订阅)相关推荐
- Java设计模式-观察者模式(订阅发布模式)
Java设计模式-观察者模式(订阅发布模式) 一起来看 会了就当复习丫,不会来一起来看看吧. 很喜欢一句话:"八小时内谋生活,八小时外谋发展". 如果你也喜欢,让我们一起坚持吧!! ...
- java设计模式--观察者模式(Observer)
java设计模式--观察者模式(Observer) java设计模式--观察者模式(Observer) 观察者模式的定义: 定义对象间的一种一对多的依赖关系.当一个对象的状态发生改变时,所有依赖于它的 ...
- 趣谈设计模式 | 观察者模式(Observer) :消息的发布与订阅
文章目录 案例:文章推送 观察者模式 观察者模式的运作流程 观察者模式解决的问题 观察者模式大显身手 总结 要点 应用场景 生产者-消费者模型 VS 观察者模式 完整代码及文档 案例:文章推送 假设我 ...
- JAVA 设计模式 观察者模式
用途 观察者模式 (Observer) 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象. 这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己. 观 ...
- java设计模式 观察者模式_理解java设计模式之观察者模式
在生活实际中,我们经常会遇到关注一个事物数据变化的情况,例如生活中的温度记录仪,当温度变化时,我们观察它温度变化的曲线,温度记录日志等.对于这一类问题,很接近java设计模式里面的"观察者模 ...
- java设计模式观察者模式吗_Java设计模式之观察者模式原理与用法详解
Java设计模式之观察者模式原理与用法详解 本文实例讲述了Java设计模式之观察者模式原理与用法.分享给大家供大家参考,具体如下: 什么是观察者模式 可以这么理解: 观察者模式定义了一种一对多的依赖关 ...
- java设计模式观察者模式_java设计模式--观察者模式
观察者模式:又称发布-订阅(Publish/Subscribe)模式.我们先看一个例子,现在直播行业越做越大,许多人都有关注自己喜欢的主播,人们订阅某一个主播,当该主播开播时,给订阅他的人发布提示说他 ...
- Java设计模式——观察者模式与Spring事件监听器
写在前面的话:终于通读了一遍<Spring源码深度解析>,在Spring的消息发布(Message)模块使用了设计模式中的观察者模式的经典实现,所以趁此机会总结一些. 1. 业务场景 Sp ...
- Java设计模式——观察者模式
转自:http://www.cnblogs.com/shamgod/p/4588557.html 一.概述 childe类中的是关联监听者dad的,若要再增加监听者,会很不方便,且要修改代码.好的方法 ...
最新文章
- CSS的一个FAQ问题——浮动层覆盖问题!!!
- c++ lambda基本语法
- IDEA类和方法注释模板设置(非常详细、实用)
- Windows在当前目录快速打开cmd的方法
- 微信小程序 三元运算 checked
- 干得漂亮!法院在微信朋友圈精准投放“老赖”广告 网友:建议全国推广
- HttpModule httpHandle 执行顺序
- Python -- 大小写转换
- 18 段代码带你玩转 18 个机器学习必备交互工具
- 联想拯救者Y7000P的一些功能键
- 聊一聊输入阻抗、输出阻抗和阻抗匹配
- 交换二叉树的左右子树——非递归方式
- 抖音无水印视频批量下载
- docker搭建mongodb高可用集群
- 深度学习及并行化实现概述
- 下个五年,跨境支付的变数在哪里?
- Linux网络环境配置 虚拟机网络环境配置
- RTL88x2bu网卡驱动Kali安装及部分问题解决
- 梦想CAD控件com接口界面控制右键弹出菜单
- JAVA学习中好网站