首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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-22 16:39
已编辑
华中科技大学 光通信工程师
秋招就到这儿吧。
秋招真的是一场持久战,每一天都有不同的心情。。。 随着华为的审批保温,差不多整个秋招也就结束了。 BG:双九,保研,本硕都是电子信息类(光电方向),研究方向是光通信这一块。 秋招一共投递了17家公司,我的想法很明确,最后的最后的最后是希望能够做解决方案一类,也就是技术+销售结合的事儿。但这样的岗要求很高,基本很少校招,都是社招或内部研发输出一线这样的模式。所以我投递的岗包括技术岗和非技术岗。 收到面试邀请9家,获得offer(含保温)9家,已拿到8offer,预计9offer。面试通过率100%。所有的面经都在主页了,欢迎各位大佬指正批评。🙇 5月准备华为客经实习开始陆...
zachsun:
华科硕士给13级?有点逆天了吧
25届秋招总结
点赞
评论
收藏
分享
11-23 11:10
北京航空航天大学 前端工程师
网易实习四个月体验
上班时间是10点到18点半,中午有两个小时的午休,算下来每天工作也就六个半小时。我所在的组任务量刚刚好,四个月里从来没有加过班。不过听说有些组的同事就没那么幸运,吃饭的时候有哥们说他连续三周都在加班。同事们都特别友好,几乎每周都有免费的下午茶,大家一起聊天,气氛超好。还有,网易严选的员工购物打三折,花了90多块买了300多的东西,很划算
网易公司福利 152人发布
点赞
评论
收藏
分享
11-01 20:03
已编辑
门头沟学院 算法工程师
美团今年给的太多了,晕了看晕过去了,40k如过江之鲫
Amazarashi66:
这种也是幸存者偏差了,拿不到这个价的才是大多数
点赞
评论
收藏
分享
10-20 18:34
已编辑
西北工业大学 测试开发
为啥没面试通知啊
简历有问题还是java软件开发太卷了新改的简历是否还凑活,我就想找个月薪过万的工作诶,要求也不高吧
若木_:
实习不对口,项目太简单
点赞
评论
收藏
分享
11-22 22:26
门头沟学院 前端工程师
糕手的秋招总结
没人规定0offer就不能写秋招总结吧?😡写出我的经历,让你们看看我至今还是0offer糕手,都做对了些什么🤡🤡🤡糕手思维比较发散,所以写帖子一般废话多了点我尽量来点干货(话说今天恰华莱士给我干窜了。。。)前排提醒,小白向的,您都拿大厂offer或者就是前端大师,糕手可不敢在您面前造次啊🤡🤡🤡1.运气非常重要,如果你做到了这一条,剩下的都是狗屁,没啥要看的了2.简历还是简点好,缩成一页已经是老生常谈了,除非你四五段实习吧。就拿前端举例子,不太建议写TS。刚开始的小白思维都这样,我新学会个技术栈,那一定要写上,证明我的牛x都这么过来的,都懂我从始至终都不太喜欢TS,你可以...
码农烧烤启动:
喜欢糕手
点赞
评论
收藏
分享
点赞成功,聊一聊 >
点赞
收藏
评论
分享
回复帖子
提到的真题
返回内容
全站热榜
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届秋招总结
#
287769次浏览
2524人参与
#
学历or实习经历,哪个更重要
#
49057次浏览
378人参与
#
北方华创开奖
#
25382次浏览
275人参与
#
地方国企笔面经互助
#
3484次浏览
7人参与
#
美团求职进展汇总
#
1323489次浏览
12420人参与
#
选完offer后,你后悔学本专业吗
#
18372次浏览
131人参与
#
阿里云管培生offer
#
4831次浏览
112人参与
#
如何一边实习一边秋招
#
990208次浏览
12628人参与
#
得物求职进展汇总
#
65592次浏览
677人参与
#
腾讯求职进展汇总
#
194849次浏览
1632人参与
#
银行笔面经互助
#
82163次浏览
872人参与
#
提前批简历挂麻了怎么办
#
145992次浏览
1942人参与
#
0offer是寒冬太冷还是我太菜
#
895565次浏览
7985人参与
#
海康威视求职进展汇总
#
397911次浏览
3403人参与
#
机械人,你在招聘流程中的企业有哪些?
#
17765次浏览
186人参与
#
许愿池
#
213200次浏览
2529人参与
#
国央企薪资爆料
#
5595次浏览
41人参与
#
网申一定要掌握的小技巧
#
5248次浏览
52人参与
#
你们公司几号发工资
#
10661次浏览
99人参与
#
没有实习经历,还有机会进大厂吗
#
810660次浏览
13917人参与
#
你最想要的公司福利是?
#
44755次浏览
181人参与
#
听到哪句话就代表面试稳了or挂了?
#
93754次浏览
785人参与
牛客网
牛客企业服务