首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用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
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
昨天 13:52
三七互娱_游戏开发_系统开发(准入职员工)
三七互娱内推,三七互娱内推码
三七互娱|游戏运营面试分享(已三面)面试形式:视频面试+单面面试时长:30分钟面试内容:自我介绍+问题+反问一面问题1. 自我介绍2. 对比两款slg游戏,分析其差异性(自我介绍中提到常玩slg游戏)3. 分析小游戏和重度游戏的差异性(我提到了游戏制作、目标受众、商业化等)4. 介绍印象最深的实习经历5. 是否有游戏运营的实习经历(我没有,但有两段其他行业的运营经历)6. 介绍自己突出的技能(我说的是人际沟通能力和数据分析能力)7. 对游戏运营的理解二面问题1. 自我介绍2. 对游戏运营的理解?3. 你觉得作为游戏运营最重要的是什么?4. 介绍笔试中提到的游戏的不足。5. 如果让你创作一款游戏...
点赞
评论
收藏
分享
10-08 14:56
科大讯飞_语言算法工程师(准入职员工)
科大讯飞内推,科大讯飞内推码
✨入职感受 ①公司环境很好 我在讯飞小镇办公,园区外部环境、就餐环境、办公环境都不很不错,园区内还有卡旺卡、瑞幸、罗森、药房、轻食店等,购物方便 ②福利待遇也不错 工资2多,每个月有200餐补,可以申请免费宿舍,打车可以用内部ai拼(乘客免费,司机有补贴) ③饭不太好吃 中午吃的排骨麻辣香锅,味道有点一般,排骨有点腥,炸猪皮个人感觉有点腻,吃了一点实在吃不下了 ④工作氛围比较轻松 带我的两个姐姐都很好,说话很温柔,其中一个只比我大一点点,相处起来很轻松,主动带我吃饭、跟我介绍园区,还请我喝了东西 ⑤通勤有点麻烦 学校离讯飞小镇太远了,班车在学校南门,我宿舍在西门,坐班车不方便。而且班车7点多出...
科大讯飞公司氛围 404人发布
点赞
评论
收藏
分享
09-29 00:03
门头沟学院 Java
哈哈,兄弟们,这份实习可以去吗😁
Data_Seven:
这不纯黑奴吗
点赞
评论
收藏
分享
09-28 10:59
已编辑
百度_高级研发工程师
为什么谈薪这么难啊
第一家谈薪只给了7000块,还一副施舍的态度,现在就业行情这么差了吗。破防了家人们。当时校园招聘会人山人海,但是没有几家大企业,毕竟双非院校嘛,华为腾讯字节阿里,都不可能去的,都是本地的小企业,还有一些北京的小企业,也很趾高气扬,施舍一样。更看不惯的,还有阿谀奉承之流,你说要是有什么好机会,你去舔舔就算了,见人就舔,见人就舔,给人舔的舒服了,以为我们学校都是这种货色。话说回来,人家高考多考的几十分总不能白费,以后要靠努力去弥补差距了。来自于2020年的我。
verge&0904:
小企业摆出阿里脸,给着白菜价
校招谈薪技巧
点赞
评论
收藏
分享
昨天 14:36
已编辑
偶像大师灰姑娘女孩 后端工程师
tracker上线啦,快来刷题吧
算法学习支持工具 链接:https://www.nowcoder.com/problem/tracker 针对算法初学者在编程学习中遇到的典型困难,提供系统性的学习支持 主要问题与解决方案 问题一:基础薄弱,题目理解困难 解决方案:新手130题集,从基础语法开始,每道题目配有详细题解 问题二:学习缺乏持续性 解决方案:每日打卡机制,进度可视化展示,积分激励系统 问题三:学习目标不明确 解决方案:分类学习路径(竞赛/求职/基础学习),难度分级体系 功能特点 基础编程能力培养 新手130题集,循序渐进设计,课程配套支持 算法竞赛训练支持 涵盖牛客周赛、小白月赛等各类竞赛...
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
国庆有感 测开劝退
4252
2
...
就这样上班一年了,选对公司跟选对人是一样的。。
3101
3
...
JVM调优
2764
4
...
10.9 荣耀通软一面
2400
5
...
双非秋招记录(下)
2330
6
...
出去实习被家里人狠狠骂了一顿
1987
7
...
实习生放了八天假
1651
8
...
化身东孝子!
1524
9
...
后端写博客不要自建博客网站
970
10
...
估计22号离职xhs了,总结下
965
创作者周榜
更多
正在热议
更多
#
一觉醒来,穿越回国庆前
#
10304次浏览
50人参与
#
你找工作的时候用AI吗?
#
149645次浏览
815人参与
#
深信服秋招来了
#
275127次浏览
2908人参与
#
国庆后,我的返工状态
#
2729次浏览
17人参与
#
央国企投递记录
#
114065次浏览
1464人参与
#
机械制造公司评价
#
143495次浏览
331人参与
#
薪资爆料
#
156912次浏览
1314人参与
#
通信/硬件公司求职体验
#
147572次浏览
966人参与
#
面试等了一周没回复,还有戏吗
#
155443次浏览
1309人参与
#
找工作有哪些冷知识
#
148302次浏览
2365人参与
#
巨人网络求职进展汇总
#
132181次浏览
916人参与
#
如果没找到工作,考公是你的退路吗
#
52655次浏览
414人参与
#
毕业季,给职场新人一些建议
#
132214次浏览
2165人参与
#
通信硬件2024笔试面试经验
#
241394次浏览
2001人参与
#
机械人求职现状
#
26229次浏览
276人参与
#
生化医药面经大本营
#
135491次浏览
515人参与
#
通信/硬件求职避坑tips
#
98667次浏览
958人参与
#
参加过提前批的机械人,你们还参加秋招么
#
96249次浏览
1563人参与
#
26届秋招投递记录
#
35648次浏览
420人参与
#
第一次面试
#
989854次浏览
13570人参与
#
满帮集团求职进展汇总
#
5264次浏览
61人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务