首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
在线笔面试、雇主品牌宣传
登录
/
注册
土拨猫
武汉理工大学 C++
发布于湖北
关注
已关注
取消关注
@程序员打工人:
【设计模式】Java设计模式 - 观察者模式
简介 观察者模式又叫发布-订阅(Publish-Subscribe)模式,是对象的行为模式,订阅是表示这些观察者对象需要向目标对象进行注册,这样目标对象才知道有哪些对象在观察它。发布指的是当目标对象的状态改变时,它就向它所有的观察者对象发布状态更改的消息,以让这些观察者对象知晓。定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 就像数学函数那样,设函数y=x²,y随着x的增长而增长,我就称x为自变量,y为因变量。 1、描述 在现实中,有些条件变化会带着一些列的变化,这就需要用if,就比如电商,一家商家与许多平台合作,每当有新产品的时候,就需要吧产品推送给各个平台,当有其他平台后来加入合作,那就需要在if中进行添加逻辑。这样会导致代码量变多,不便于维护。然而使用观察者模式便于维护,也能够扩展。 观察者模式UML如图: 2、实例 本次实验通过定义产品列表作为被观察对象,定义两个观察者观察变化,在测试中添加产品,使得被观察对象向观察者发送消息。也就是发布-订阅模式。 ①、产品列表 观察者模式是在观察者和被观察者双方,观察者可以是多个。在产品列表类中需要继承java.util.Observable的方法。 构建方法私有化,采用单例模式,避免直接通过new的方式去实例化对象,而是通过getInstance方法去实例化对象。 可以通过addProductListObserver方法来添加一个观察者。 addProduct用来添加产品,并且通知观察者 package com.lyd.demo.product; import java.util.ArrayList; import java.util.List; import java.util.Observable; import java.util.Observer; /** * @Author: lyd * @Description: 被观察的产品对象 * @Date: 2022-08-20 */ public class ProductList extends Observable { private List<String> productList = null; // 产品列表 private static ProductList instance; // 唯一实例 private ProductList() {} // 构建方法私有化 /** * 获取唯一实例 * @return 实例 */ public static ProductList getInstance() { if (instance == null) { instance = new ProductList(); instance.productList = new ArrayList<String>(); } return instance; } /** * 增加观察者(电商接口) * @param observable 观察者 */ public void addProductListObserver(Observer observable) { this.addObserver(observable); } public void addProduct(String newProduct) { productList.add(newProduct); System.out.println("产品列表新增加了产品:" + newProduct); this.setChanged(); // 设置被观察对象发送变化 this.notifyObservers(newProduct); // 通知观察者,并传递新产品 }} ②、观察者 构建两个观察者,简单做个打印,观察者需要实现java.util.Observer接口,并且实现update方法。 淘宝: package com.lyd.demo.observer; import java.util.Observable; import java.util.Observer; /** * @Author: lyd * @Description: 淘宝观察者接口 * @Date: 2022-08-20 */ public class TaoBaoObserver implements Observer { public void update(Observable o, Object product) { String newProduct = (String) product; System.out.println("发送给新产品:" + newProduct + " 同步到淘宝商城"); }}、、 京东: package com.lyd.demo.observer; import java.util.Observable; import java.util.Observer; /** * @Author: lyd * @Description: 京东观察者接口 * @Date: 2022-08-20 */ public class JingDongObserver implements Observer { public void update(Observable o, Object product) { String newProduct = (String) product; System.out.println("发送给新产品:" + newProduct + " 同步到京东商城"); }} ③、测试 先添加观察者,在添加产品,这样就能看到被观察者发布消息给观察者。
点赞 4
评论 1
全部评论
推荐
最新
楼层
还没有回复哦~
相关推荐
11-21 18:10
郑州大学 生物制药岗
大哥爆发了?
一个平时非常老实巴交的大哥(有娃有房的80后) 经典表现是领导问他有没有什么意见的时候 他:领导说的都对 我的印象一直是谄媚的职场黄牛 结果刚刚开会的时候 领导给他递了一个水壶说“帮我接壶水” 他接完回来之后说“我希望这个事情不要有下次,我是来上班的不是做这些的” 会议室大概十几个人,陷入了诡异的沉默
一升菌:
爱看再发点
点赞
评论
收藏
分享
11-22 22:26
门头沟学院 前端工程师
糕手的秋招总结
没人规定0offer就不能写秋招总结吧?😡写出我的经历,让你们看看我至今还是0offer糕手,都做对了些什么🤡🤡🤡糕手思维比较发散,所以写帖子一般废话多了点我尽量来点干货(话说今天恰华莱士给我干窜了。。。)前排提醒,小白向的,您都拿大厂offer或者就是前端大师,糕手可不敢在您面前造次啊🤡🤡🤡1.运气非常重要,如果你做到了这一条,剩下的都是狗屁,没啥要看的了2.简历还是简点好,缩成一页已经是老生常谈了,除非你四五段实习吧。就拿前端举例子,不太建议写TS。刚开始的小白思维都这样,我新学会个技术栈,那一定要写上,证明我的牛x都这么过来的,都懂我从始至终都不太喜欢TS,你可以...
码农烧烤启动:
喜欢糕手
点赞
评论
收藏
分享
11-15 17:19
湖南大学 Java
终于offer啦
成果成果成果果:
这是哪个公司的hr,这么离谱吗,我没见过用性别卡技术岗的,身边女性同学拿大厂offer的比比皆是
点赞
评论
收藏
分享
11-15 19:28
已编辑
蚌埠坦克学院 硬件开发
新凯来不愧是华为的外包
经典典中典笑死我了怎么能这么好笑
999大成功:
他也太搞笑了吧
点赞
评论
收藏
分享
11-19 19:30
浙江大学 产品专员
秋招被确诊为卖火柴的小女孩
我好像卖火柴的小女孩😢 擦亮了最后一根火柴 看到邮箱里发来了offer,写着可观的薪资,租了一间附近的房子,看到我入职之后,和新同事打招呼,领取电脑 打开电脑,发现火柴灭了 都是我的幻觉... 谁能给我个offer......
cJzl11:
秋招被确诊为……
点赞
评论
收藏
分享
点赞成功,聊一聊 >
点赞
收藏
评论
分享
回复帖子
提到的真题
返回内容
全站热榜
1
...
总结一下鼠鼠找实习的历程
2617
2
...
E n^2 可过...
2538
3
...
真心觉得25届的求职之路太艰难了
2256
4
...
腾讯hr进!
2192
5
...
offer决赛圈:字节 or 百度
1572
6
...
美团ssp值得北漂?
1546
7
...
同盾科技面试
1544
8
...
普通211本 后端秋招总结
1530
9
...
秋招offer比较,头部大厂or明星初创
1445
10
...
第三题测试没问题,但一提交错误,有没有大佬能救救
1394
正在热议
#
25届秋招总结
#
292583次浏览
2572人参与
#
美团求职进展汇总
#
1324511次浏览
12428人参与
#
北方华创开奖
#
25758次浏览
279人参与
#
地方国企笔面经互助
#
3588次浏览
8人参与
#
国央企薪资爆料
#
6316次浏览
49人参与
#
选完offer后,你后悔学本专业吗
#
18917次浏览
135人参与
#
阿里云管培生offer
#
14757次浏览
260人参与
#
学历or实习经历,哪个更重要
#
49795次浏览
384人参与
#
如果不工作真的会快乐吗
#
58404次浏览
505人参与
#
面试体验感最好的是哪家?
#
84729次浏览
839人参与
#
如何一边实习一边秋招
#
990667次浏览
12630人参与
#
正在实习的你,几点下班
#
51179次浏览
381人参与
#
得物求职进展汇总
#
65832次浏览
678人参与
#
腾讯求职进展汇总
#
195110次浏览
1635人参与
#
提前批简历挂麻了怎么办
#
146070次浏览
1942人参与
#
银行笔面经互助
#
82416次浏览
873人参与
#
0offer是寒冬太冷还是我太菜
#
896498次浏览
7997人参与
#
实习生应该准时下班吗
#
167161次浏览
1159人参与
#
数据人offer决赛圈怎么选
#
116396次浏览
1461人参与
#
海康威视求职进展汇总
#
398151次浏览
3403人参与
#
网申一定要掌握的小技巧
#
5278次浏览
52人参与
#
机械人,你在招聘流程中的企业有哪些?
#
17790次浏览
186人参与
牛客网
牛客企业服务