什么叫观察者模式:
观察者模式是广播机制,消息订阅和推送的核心设计。

开发中常见的场景:
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设计模式-观察者模式(广播机制,消息订阅)相关推荐

  1. Java设计模式-观察者模式(订阅发布模式)

    Java设计模式-观察者模式(订阅发布模式) 一起来看 会了就当复习丫,不会来一起来看看吧. 很喜欢一句话:"八小时内谋生活,八小时外谋发展". 如果你也喜欢,让我们一起坚持吧!! ...

  2. java设计模式--观察者模式(Observer)

    java设计模式--观察者模式(Observer) java设计模式--观察者模式(Observer) 观察者模式的定义: 定义对象间的一种一对多的依赖关系.当一个对象的状态发生改变时,所有依赖于它的 ...

  3. 趣谈设计模式 | 观察者模式(Observer) :消息的发布与订阅

    文章目录 案例:文章推送 观察者模式 观察者模式的运作流程 观察者模式解决的问题 观察者模式大显身手 总结 要点 应用场景 生产者-消费者模型 VS 观察者模式 完整代码及文档 案例:文章推送 假设我 ...

  4. JAVA 设计模式 观察者模式

    用途 观察者模式 (Observer) 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象. 这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己. 观 ...

  5. java设计模式 观察者模式_理解java设计模式之观察者模式

    在生活实际中,我们经常会遇到关注一个事物数据变化的情况,例如生活中的温度记录仪,当温度变化时,我们观察它温度变化的曲线,温度记录日志等.对于这一类问题,很接近java设计模式里面的"观察者模 ...

  6. java设计模式观察者模式吗_Java设计模式之观察者模式原理与用法详解

    Java设计模式之观察者模式原理与用法详解 本文实例讲述了Java设计模式之观察者模式原理与用法.分享给大家供大家参考,具体如下: 什么是观察者模式 可以这么理解: 观察者模式定义了一种一对多的依赖关 ...

  7. java设计模式观察者模式_java设计模式--观察者模式

    观察者模式:又称发布-订阅(Publish/Subscribe)模式.我们先看一个例子,现在直播行业越做越大,许多人都有关注自己喜欢的主播,人们订阅某一个主播,当该主播开播时,给订阅他的人发布提示说他 ...

  8. Java设计模式——观察者模式与Spring事件监听器

    写在前面的话:终于通读了一遍<Spring源码深度解析>,在Spring的消息发布(Message)模块使用了设计模式中的观察者模式的经典实现,所以趁此机会总结一些. 1. 业务场景 Sp ...

  9. Java设计模式——观察者模式

    转自:http://www.cnblogs.com/shamgod/p/4588557.html 一.概述 childe类中的是关联监听者dad的,若要再增加监听者,会很不方便,且要修改代码.好的方法 ...

最新文章

  1. CSS的一个FAQ问题——浮动层覆盖问题!!!
  2. c++ lambda基本语法
  3. IDEA类和方法注释模板设置(非常详细、实用)
  4. Windows在当前目录快速打开cmd的方法
  5. 微信小程序 三元运算 checked
  6. 干得漂亮!法院在微信朋友圈精准投放“老赖”广告 网友:建议全国推广
  7. HttpModule httpHandle 执行顺序
  8. Python -- 大小写转换
  9. 18 段代码带你玩转 18 个机器学习必备交互工具
  10. 联想拯救者Y7000P的一些功能键
  11. 聊一聊输入阻抗、输出阻抗和阻抗匹配
  12. 交换二叉树的左右子树——非递归方式
  13. 抖音无水印视频批量下载
  14. docker搭建mongodb高可用集群
  15. 深度学习及并行化实现概述
  16. 下个五年,跨境支付的变数在哪里?
  17. Linux网络环境配置 虚拟机网络环境配置
  18. RTL88x2bu网卡驱动Kali安装及部分问题解决
  19. 梦想CAD控件com接口界面控制右键弹出菜单
  20. JAVA学习中好网站

热门文章

  1. 创建表空间oracle10g,Oracle10g创建表空间慢问题
  2. 人一切的痛苦,本质上都是对自己的无能的愤怒。──王小波
  3. Linux共享库概述
  4. 模糊PID控制的规则表一点理解
  5. 使用 python 创建更改 word 文档
  6. Spring Boot简介,四大核心,特性
  7. 论VM和Hyper-v虚拟机的使用场景
  8. 笔记本电脑开机到登入页面扩展显示器和电脑突然黑屏很久才显示
  9. 2021年最佳知识库软件指南
  10. 微信小程序开发中的这些坑你遇到过吗?