java 设计模式之 观察者模式 发布订阅(Publisher/Subscribe)模式
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)模式相关推荐
- Java设计模式:观察者模式
观察者模式 观察者模式又称为发布/订阅(Publish/Subscribe)模式 在对象之间定义了一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象会收到通知并自动更新. 如果这句话不好理解 可 ...
- RabbitMQ教程 3.发布/订阅(Publish/Subscribe)
搜索:Java课代表,关注公众号,及时获取更多Java干货. 3 发布/订阅(Publish/Subscribe) 在上一节中,我们创建了一个工作队列.其目的是将每个任务只分发给一个worker.本节 ...
- 设计模式-观察者模式 发布/订阅模式
设计模式-观察者模式 发布/订阅模式 代码 观察者接口 public interface IHanFeiZi{// 当吃早饭时public void havBreakFast();// 进行娱乐活动时 ...
- java 观察者模式_图解Java设计模式之观察者模式
图解Java设计模式之观察者模式 天气预报项目需求 天气预报设计方案 1 - 普通方案 观察者模式(Observer)原理 观察者模式解决天气预报需求 观察者模式在JDK应用的源码分析 天气预报项目需 ...
- Java设计模式系列--观察者模式(使用)
原文网址:Java设计模式系列--观察者模式(使用)_IT利刃出鞘的博客-CSDN博客 简介 说明 本文用示例介绍观察者模式的用法. 观察者模式的含义 以微信公众号为例.我们关注了某个微信公众号后能收 ...
- Java设计模式之观察者模式(UML类图分析+代码详解)
大家好,我是一名在算法之路上不断前进的小小程序猿!体会算法之美,领悟算法的智慧~ 希望各位博友走过路过可以给我点个免费的赞,你们的支持是我不断前进的动力!! 加油吧!未来可期!! 本文将介绍java设 ...
- Java设计模式之行为型:责任链模式
背景: 学校规定参加校招的同学必须要请假,且要有相关人员的签字,三天以下需辅导员签字.三到七天需要系主任签字,一个星期以上需要院长签字,更多的则需要校长签字! 上图将学生.辅导员.系主任.院长.校长组 ...
- Java设计模式之结构型:享元模式
一.什么是享元模式: 享元模式通过共享技术有效地支持细粒度.状态变化小的对象复用,当系统中存在有多个相同的对象,那么只共享一份,不必每个都去实例化一个对象,极大地减少系统中对象的数量.比如说一个文本系 ...
- Java设计模式之结构型:装饰器模式
一.什么是装饰器模式: 当需要对类的功能进行拓展时,一般可以使用继承,但如果需要拓展的功能种类很繁多,那势必会生成很多子类,增加系统的复杂性,并且使用继承实现功能拓展时,我们必须能够预见这些拓展功能, ...
最新文章
- Spring Boot 3.0 M1 发布,正式弃用 Java 8,最低要求 Java 17。。。
- anaconda怎么运行python程序_Heartrate:如追综心跳般实时动态可视化监测Python程序运行...
- IE9上特定网站不断崩溃的故障
- 编译原理中LL(1)分析程序的设计---用c++程序语言实现
- 60K!刚面完Python!这个被Oracle裁掉的程序员求职刷爆全网!
- Hadoop系列之DistributedCache用法
- jquery赋值节点
- 软件工程7条基本原理
- Linux服务器使用网络代理
- 一文搞懂PID控制算法
- android oppo 模拟器,小姚Android构建VIVO华为魅族OPPO小米联想手游Android模拟器
- 2019.07.23--运用三W法则初步学习SpringCloud基础知识
- rrcf算法的初步理解
- 数理逻辑蕴含_(1)逻辑学(形式逻辑/数理逻辑): 基本概念
- 陈莉君教授: 回望踏入Linux内核之旅(下篇)
- python3 模块调用其他类的方法_python类的函数调用 python如何引用其他模块中类的方法中的变量?...
- windows 商店的Ubuntu18.04安装教程
- 中国光学镜头行业营销趋势及盈利前景预测报告(新版)2022-2027年
- 【算法图解】第七章:7.5(狄克斯特拉算法优化版)
- LDPC码Gallager构造校验矩阵(MATLAB)