首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
11-21 11:44
新易盛_数据系统部_数据中心系统工程师(准入职员工)
小天才内推,小天才内推码
小天才26秋招分享(三面凉经)tl:9.13投递-10.10自主约面-10.10一面-10.11上传作品集-10.14二面-10.16三面(交叉面) 一面:线上邮件通知选择具体面试时间段(大约20mins)面试官问题1. 请先做一个自我介绍(1分钟左右)。2. 简历项目追问3. 在校期间有获得哪些奖学金吗?4. 有挂过科吗?5. 学得最好的课程是哪些?6. 分享一个人力资源领域中你觉得很重要的知识点。7. 根据以上追问若干问题8. 结合实习经历,招聘的具体成果是你直接负责的社招岗位吗?9. 你的导师对你的工作评价是什么样的?10.追问11.综合实习经历,你目前更适合做人力哪个方向的工作?12....
点赞
评论
收藏
分享
11-21 11:35
三七互娱_游戏开发_系统开发(准入职员工)
图拉斯内推,图拉斯内推码
ai面总结:AI调教的很好,问的问题很有意思,整场面试不会有很大的压迫感,追问大多是根据你的回答提问。总时长:35分钟Q1:自我介绍,重点介绍一下个人背景和大学期间的主要经历。Q2:你对于在一家公司长期发展有什么看法?你认为哪几点因素会让你在一家公司长期工作?(有追问)Q3:你取得过的最大成就是什么?过程中最大的难点是什么?你是如何突破的?最终的结果怎么样?(有追问2个)Q4:请描述一个过往遇到的最有压力困难或最具挑战的一个场景,你是如何解决的?对你有什么影响?(有追问)Q5:依你的看法,请描述一个你近期完成的项目任务,如果重来一次,你会做哪些不同的事情来提升结果?(有追问2个)Q6:电商运营...
点赞
评论
收藏
分享
11-12 17:27
已编辑
北京理工大学珠海学院 嵌入式软件工程师
这个工资你们去干吗?
#投了多少份简历才上岸#
没有offer的呆呆:
单休不考虑,真的会很累的
投了多少份简历才上岸
点赞
评论
收藏
分享
11-19 00:55
吉林大学 Java
虾皮 数据开发 日常实习一面凉经(疑似KPI面)
第二场面试,但面的莫名其妙的。11.13于ssob投递,当时投递的是虾皮后端开发岗,hr接收了简历后提议给我转投数据开发岗(并提到此部门做的也偏后端)。当时没多想就同意了,并约到了11.18进行面试。当时电话对面的人语气似乎很急切,一直问下月初前能否到岗。 但昨天下午开始面的时候我就傻眼了,面试官一上来就和我提到,实习岗位和我的简历技术栈不匹配,他这边主要是招收大数据开发的(写SQL)。接下来对着简历问了一些八股就匆匆结束了,前后总共二十分钟,甚至算法题都没问。 这次面试过程没17号晚上面快手那场那么紧张了,精神状态好了不少,看来还是得多面,能面一场是赚一场,越面越从容。顺道问一下各位牛友,虾...
查看19道真题和解析
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
逆流河上万仙退
8505
2
...
听说百度年底裁员大地震,赔偿n+3?
5420
3
...
【现金奖励】26秋招薪资爆料征集,瓜分现金红包!
4951
4
...
挑战一篇讲完实习转正
4482
5
...
进大厂后的我沦为带饭丫鬟
3809
6
...
大厂校招选人的核心逻辑是什么?
3780
7
...
腾讯IEG后端日常实习一面
3568
8
...
字节谈薪经验帖
3500
9
...
大厂病??我来说说
2871
10
...
十一月心想事成
2722
创作者周榜
更多
正在热议
更多
#
你想跟着什么样领导?
#
3714次浏览
66人参与
#
你的秋招白月光和意难平公司
#
5283次浏览
63人参与
#
百度秋招
#
55480次浏览
394人参与
#
找实习是选平台还是选业务?
#
8980次浏览
136人参与
#
什么样的背景能拿SSP?
#
116797次浏览
409人参与
#
从夯到拉,评价编程语言
#
4333次浏览
46人参与
#
秋招签约后的心态变化
#
105581次浏览
923人参与
#
每个月花钱最多的地方是?
#
4531次浏览
67人参与
#
分享一个让你热爱工作的瞬间
#
46981次浏览
411人参与
#
职场吐槽大会
#
289155次浏览
2108人参与
#
xxx岗位的一天
#
8694次浏览
84人参与
#
十一月总结
#
11911次浏览
137人参与
#
你面试时吹过最大的牛
#
18395次浏览
104人参与
#
实习学到最有价值的工作习惯
#
43114次浏览
378人参与
#
AI“智障”时刻
#
5422次浏览
50人参与
#
作业帮求职进展汇总
#
76784次浏览
519人参与
#
实习生如何通过转正
#
111300次浏览
1421人参与
#
饿了么求职进展汇总
#
79911次浏览
684人参与
#
应届生第一份工作最好去大厂吗?
#
103443次浏览
945人参与
#
你秋招想去哪些公司
#
67304次浏览
1724人参与
#
想给25届机械人的秋招建议
#
37898次浏览
237人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务