interface Subject {//通知人void setAction(String action);void attach(Observer observer);void detach(Observer observer);void notifyALL();}interface Observer {//要通知的对象,在接收通知后做出相应的改变void update();
}class Boss implements Subject {private List<Observer> list = new LinkedList<>();@Overridepublic void setAction(String action) {System.out.println(action);}@Overridepublic void attach(Observer observer) {list.add(observer);}@Overridepublic void detach(Observer observer) {list.remove(observer);}@Overridepublic void notifyALL() {for (Observer o : list) {o.update();}}
}//Secretary类与Boss类类似
class Secretary implements Subject {@Overridepublic void setAction(String action) {System.out.println(action);}@Overridepublic void attach(Observer observer) {}@Overridepublic void detach(Observer observer) {}@Overridepublic void notifyALL() {}
}//接收通知的人
class Watcher implements Observer {private String name;private Subject subject;public Watcher(String name, Subject subject) {this.name = name;this.subject = subject;}@Overridepublic void update() {//更新操作System.out.println(name + "关闭B站,继续工作");}
}class NBAfans implements Observer {private String name;private Subject subject;public NBAfans(String name, Subject subject) {this.name = name;this.subject = subject;}@Overridepublic void update() {System.out.println(name + "关闭NBA直播,继续工作");}public static void main(String[] args) {Boss boss = new Boss();Watcher watcher = new Watcher("Zhangsan", boss);NBAfans fans = new NBAfans("Lisi", boss);boss.attach(watcher);boss.attach(fans);boss.setAction("老板回来了!");boss.notifyALL();}
}

java 设计模式之 观察者模式 发布订阅(Publisher/Subscribe)模式相关推荐

  1. Java设计模式:观察者模式

    观察者模式 观察者模式又称为发布/订阅(Publish/Subscribe)模式 在对象之间定义了一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象会收到通知并自动更新. 如果这句话不好理解 可 ...

  2. RabbitMQ教程 3.发布/订阅(Publish/Subscribe)

    搜索:Java课代表,关注公众号,及时获取更多Java干货. 3 发布/订阅(Publish/Subscribe) 在上一节中,我们创建了一个工作队列.其目的是将每个任务只分发给一个worker.本节 ...

  3. 设计模式-观察者模式 发布/订阅模式

    设计模式-观察者模式 发布/订阅模式 代码 观察者接口 public interface IHanFeiZi{// 当吃早饭时public void havBreakFast();// 进行娱乐活动时 ...

  4. java 观察者模式_图解Java设计模式之观察者模式

    图解Java设计模式之观察者模式 天气预报项目需求 天气预报设计方案 1 - 普通方案 观察者模式(Observer)原理 观察者模式解决天气预报需求 观察者模式在JDK应用的源码分析 天气预报项目需 ...

  5. Java设计模式系列--观察者模式(使用)

    原文网址:Java设计模式系列--观察者模式(使用)_IT利刃出鞘的博客-CSDN博客 简介 说明 本文用示例介绍观察者模式的用法. 观察者模式的含义 以微信公众号为例.我们关注了某个微信公众号后能收 ...

  6. Java设计模式之观察者模式(UML类图分析+代码详解)

    大家好,我是一名在算法之路上不断前进的小小程序猿!体会算法之美,领悟算法的智慧~ 希望各位博友走过路过可以给我点个免费的赞,你们的支持是我不断前进的动力!! 加油吧!未来可期!! 本文将介绍java设 ...

  7. Java设计模式之行为型:责任链模式

    背景: 学校规定参加校招的同学必须要请假,且要有相关人员的签字,三天以下需辅导员签字.三到七天需要系主任签字,一个星期以上需要院长签字,更多的则需要校长签字! 上图将学生.辅导员.系主任.院长.校长组 ...

  8. Java设计模式之结构型:享元模式

    一.什么是享元模式: 享元模式通过共享技术有效地支持细粒度.状态变化小的对象复用,当系统中存在有多个相同的对象,那么只共享一份,不必每个都去实例化一个对象,极大地减少系统中对象的数量.比如说一个文本系 ...

  9. Java设计模式之结构型:装饰器模式

    一.什么是装饰器模式: 当需要对类的功能进行拓展时,一般可以使用继承,但如果需要拓展的功能种类很繁多,那势必会生成很多子类,增加系统的复杂性,并且使用继承实现功能拓展时,我们必须能够预见这些拓展功能, ...

最新文章

  1. Spring Boot 3.0 M1 发布,正式弃用 Java 8,最低要求 Java 17。。。
  2. anaconda怎么运行python程序_Heartrate:如追综心跳般实时动态可视化监测Python程序运行...
  3. IE9上特定网站不断崩溃的故障
  4. 编译原理中LL(1)分析程序的设计---用c++程序语言实现
  5. 60K!刚面完Python!这个被Oracle裁掉的程序员求职刷爆全网!
  6. Hadoop系列之DistributedCache用法
  7. jquery赋值节点
  8. 软件工程7条基本原理
  9. Linux服务器使用网络代理
  10. 一文搞懂PID控制算法
  11. android oppo 模拟器,小姚Android构建VIVO华为魅族OPPO小米联想手游Android模拟器
  12. 2019.07.23--运用三W法则初步学习SpringCloud基础知识
  13. rrcf算法的初步理解
  14. 数理逻辑蕴含_(1)逻辑学(形式逻辑/数理逻辑): 基本概念
  15. 陈莉君教授: 回望踏入Linux内核之旅(下篇)
  16. python3 模块调用其他类的方法_python类的函数调用 python如何引用其他模块中类的方法中的变量?...
  17. windows 商店的Ubuntu18.04安装教程
  18. 中国光学镜头行业营销趋势及盈利前景预测报告(新版)2022-2027年
  19. 【算法图解】第七章:7.5(狄克斯特拉算法优化版)
  20. LDPC码Gallager构造校验矩阵(MATLAB)

热门文章

  1. irq_request()
  2. 五个网站查物种基因组大小
  3. VBA分别计算Excel的每一行填充颜色的单元格。把结果写到行最后
  4. 第六章 差分方程与代数方程模型
  5. 小程序同一页面赋值Jso的数据并显示出来(完美案例)
  6. 阿里云-函数计算,Process exited unexpectedly before completing request,错误解决
  7. 【全解析】屏幕尺寸/分辨率/像素/PPI之间到底什么关系?
  8. 新零售行业如何玩转线上服务
  9. 千兆网(2):数据的发送与接收测试
  10. 微信公众号开发最全整理