Java实现观察者模式
Java实现观察者模式
观察者模式,简单来说就是一对多的依赖,并且把观察者和被观察者对象分开松耦合
当某个对象的状态发生更新时,所有依赖的观察者都会收到更新,而断掉依赖的则不在收到
代码实现:
主题:售楼处的某位员工向有兴趣的用户群发房源降价的消息
1、创建观察者接口Observer
public interface Observer {//观察者接口void update(String msg);
}
2、创建被观察者接口
public interface Subject {//被观察者的接口:注册、取消注册、观察通知void reg(Observer obs);void unreg(Observer obs);void sendMessage(String msg);
}
3、被观察者的实现类
public class Building implements Subject {List<Observer> obses = new ArrayList<Observer>();//注册@Overridepublic void reg(Observer obs) {obses.add(obs);}//取消注册 拉黑@Overridepublic void unreg(Observer obs) {if (!obses.isEmpty()&&obses.contains(obs)){obses.remove(obs);}}//发消息,群发@Overridepublic void sendMessage(String msg) {for (Observer obs : obses) {obs.update("某个售楼处的小姐姐:"+msg);}}
}
4、观察者的实现类
public class Yourself implements Observer{private String yourName;public Yourself(String yourName) {this.yourName = yourName;}@Overridepublic void update(String msg) {System.out.println(yourName+"接到"+msg);}
}
5、main方法
public class App {public static void main(String[] args) {//创建一个售楼处的小姐姐(生产者)Subject sister = new Building();//创建3个观察者(消费者)Observer ys1 = new Yourself("张三");Observer ys2 = new Yourself("李四");Observer ys3 = new Yourself("王五");//去售楼处加小姐姐的微信sister.reg(ys1);sister.reg(ys2);sister.reg(ys3);//某天李四通知小姐姐取消订阅,说我不看了别发我了sister.unreg(ys2);//楼盘价格降了,售楼处的小姐姐通过加的微信通知观察者sister.sendMessage("楼房价格降低了");}
}
6、输出
可以看到李四取消订阅后,已经收不到消息了
“楼房价格降低了”);
}
}
6、输出可以看到李四取消订阅后,已经收不到消息了[外链图片转存中...(img-aH8ede5k-1616731575003)]
Java实现观察者模式相关推荐
- java设计模式--观察者模式(Observer)
java设计模式--观察者模式(Observer) java设计模式--观察者模式(Observer) 观察者模式的定义: 定义对象间的一种一对多的依赖关系.当一个对象的状态发生改变时,所有依赖于它的 ...
- Java设计模式-观察者模式(订阅发布模式)
Java设计模式-观察者模式(订阅发布模式) 一起来看 会了就当复习丫,不会来一起来看看吧. 很喜欢一句话:"八小时内谋生活,八小时外谋发展". 如果你也喜欢,让我们一起坚持吧!! ...
- java的观察者模式
Java里面的观察者模式,是一个非常经典的模式,经常在开发中被用到,掌握了这个思想,我相信对于一些开发,受益是匪浅的:鄙人也是觉得比较不错,所以发表一点自己的总结,如果对还处于迷茫的你有稍微的帮助的话 ...
- 设计模式总结(Java)—— 观察者模式
概述 它用于建立一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应作出反应.在观察者模式中,发生改变的对象称为观察目标,而被通知的对象称为观察者,一个观察目标可以对应多 ...
- java设计模式 观察者模式_理解java设计模式之观察者模式
在生活实际中,我们经常会遇到关注一个事物数据变化的情况,例如生活中的温度记录仪,当温度变化时,我们观察它温度变化的曲线,温度记录日志等.对于这一类问题,很接近java设计模式里面的"观察者模 ...
- java设计模式---观察者模式
观察者模式 Observer 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象. 这个主题对象在状态上发生变化时,会通知所有观察者对象,让它们能够自动更新自己. 观察者模式 ...
- java jdk 观察者模式_java观察者模式实现和java观察者模式演化
简单的观察者模式实现 import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; impo ...
- JAVA 设计模式 观察者模式
用途 观察者模式 (Observer) 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象. 这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己. 观 ...
- java设计模式观察者模式吗_Java设计模式之观察者模式原理与用法详解
Java设计模式之观察者模式原理与用法详解 本文实例讲述了Java设计模式之观察者模式原理与用法.分享给大家供大家参考,具体如下: 什么是观察者模式 可以这么理解: 观察者模式定义了一种一对多的依赖关 ...
- JAVA设计模式-观察者模式(Observe)
观察者模式 其实就是一个发布者和订阅者之间的关系 如果订阅者订阅了发布者,那么发布者发布一条消息,订阅者就会立马知道. 中间的关系也就是订阅者需要去订阅消息(也就是,发布者的通知资源池子(也就是存储订 ...
最新文章
- PYTHON编程导论群问题汇总(四)
- 将 Hadoop YARN 发扬广大
- python就业方向及工资-Python的就业的方向和前景
- java环境安装之不能安装exe文件
- jqplot学习笔记
- 怎么求导来着?别费劲了,试试这个Python的通用求导法
- UICollectionView reloadData后cell被隐藏
- mysql 用source 导入数据库报错
- POJ3068 Shortest pair of paths 【费用流】
- [POJ3233] Matrix Power Series(矩阵快速幂)
- excel怎么设置自动计算_机械设计工程师辅助计算Excel表格,自动进行选型计算...
- 基于Java毕业设计在线商城系统源码+系统+mysql+lw文档+部署软件
- 第三方支付业务流程介绍
- B - Learning Languages
- Hexo系列(四) NexT主题配置
- MATLAB:零状态响应(lsim(连续);filter(离散))、冲激响应(impulse或impz)和阶跃响应(step)、卷积(conv)
- HttpClient解析服务器返回的response出现乱码
- 可以插卡的ipad_请问苹果的iPad那几款是能无线也能插卡的
- app小程序手机端Python爬虫实战01-Uiautomator2自动化抓取工具介绍
- POJ 2924 Gauß in Elementary School(简单题)