首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
just_to_do
广州大学华软软件学院 前端工程师
关注
已关注
取消关注
通过实现观察者模式,我们解耦了主题和观察者,使它们能够独立变化。主题可以通知多个观察者,而观察者可以根据需要进行相应的处理。这种模式在许多场景中都非常有用,如事件监听、数据变化通知等。
@阿珊和她的猫:
面试高频手撕题 | 18.实现一个观察者模式
一、知识点 观察者模式(Observer Pattern)是一种软件设计模式,它定义了对象之间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。 在观察者模式中,有以下几个角色: 主题(Subject):被观察的对象,它拥有状态并可以修改状态。 观察者(Observer):观察主题的对象,当主题的状态发生改变时,观察者会收到通知。 具体主题(ConcreteSubject):具体的被观察对象,它实现了主题的接口,持有观察者列表,并在状态改变时通知观察者。 具体观察者(ConcreteObserver):具体的观察对象,它实现了观察者的接口,接收主题的通知并进行相应的处理。 二、思路分析 实现观察者模式的关键是解耦主题和观察者,让它们能够独立变化。以下是一些基本的思路: 主题持有观察者列表,当状态改变时遍历通知观察者。 观察者通过注册或订阅方式向主题登记,以便接收通知。 主题和观察者之间定义一个接口,用于通知状态变化。 三、JavaScript 解答 以下是使用 JavaScript 实现观察者模式的一个简单示例: class Subject { constructor() { this.observers = []; } attachObserver(observer) { this.observers.push(observer); } detachObserver(observer) { this.observers = this.observers.filter(item => item !== observer); } notifyObservers() { this.observers.forEach(observer => observer.update()); }}class Observer { constructor(name) { this.name = name; } update() { console.log(`${this.name} 收到通知`); }}// 创建主题对象const subject = new Subject();// 创建观察者对象const observer1 = new Observer('Observer 1');const observer2 = new Observer('Observer 2');// 观察者注册到主题subject.attachObserver(observer1);subject.attachObserver(observer2);// 主题发出通知subject.notifyObservers();// 观察者取消注册subject.detachObserver(observer1);// 主题再次发出通知subject.notifyObservers(); 在上述示例中,我们创建了一个Subject类和一个Observer类。Subject类负责管理观察者,并提供了attachObserver、detachObserver和notifyObservers方法。Obs类是具体的观察者,它实现了方法用于接收通知。
点赞 2
评论 2
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
10-19 14:02
联想_后端开发部_语音算法工程师(准入职员工)
联想内推,联想内推码
供应链管理面经1. 你如何理解 "供应链管理" 的核心目标?举一个简单的供应链例子。 ◦ 追问1:供应链的 "三流" 指什么? ◦ 追问2:如何提升供应链响应速度? 2. 请描述一次你参与的物流或库存管理项目,有什么收获? 3. 解释你理解的 "供应商管理",如何选择和评估供应商? ◦ 追问1:供应商评估的指标有哪些? ◦ 追问2:如何建立供应商合作关系? 4. 你认为供应链管理中最常见的挑战是什么?如何应对? 5. 作为供应链管理专员,你认为需要具备哪些核心能力?如何培养? ◦ 追问1:如何学习供应链知识? ◦ 追问2:如何提升系统...
点赞
评论
收藏
分享
昨天 20:16
中国农业大学 算法工程师
三无大学生
985本,目前大三,没竞赛,没项目,没实习。大佬们建议是考研继续沉淀还是本科就业呢,直接就业卷技术似乎有些来不及了,估计也找不到什么实习,还有希望吗?
点赞
评论
收藏
分享
10-13 16:58
门头沟学院 Java
秋招结束
其实已经摆了一个多月了,其余所有面试均已放弃
面了100年面试不知...:
一周七天,一天去一家上班😍😍😍
点赞
评论
收藏
分享
10-13 22:22
门头沟学院 后端工程师
不想活了,
哎,一直还抱有一点希望的,但是感觉越来越迟了,看了投递数,三本鼠鼠😭😭应该怎么办,转测试还来得及吗?哭晕了,还是继续磕java
notbeentak...:
孩子,说实话,选择很重要,可能你换一个方向会好很多,但是现在时间不太够了,除非准备春招
点赞
评论
收藏
分享
10-16 10:14
库洛游戏_HR(准入职员工)
库洛游戏内推,库洛游戏内推码
笔面游戏产品运营:1. 请先做个简单的自我介绍?重点介绍一下自己的相关经历,尤其是与游戏相关的经历。📝2. 你最近5年的职业规划是什么,能否详细的谈一下,如何与该岗位发展契合?🚀3. 你应聘这个岗位的优势是什么?劣势是什么?(各说三点)结合应届生身份谈谈。💪4. 为什么选择应聘我们公司?从公司特色和自身对游戏运营的向往讲讲。❤️5. 能不能谈谈对我们公司产品和所在行业的了解?着重说说鸣潮相关。🎯6. 你期望的薪酬是多少? 结合应届生身份和岗位要求谈谈你的期望依据。💰7. 大学期间最喜欢哪一门专业课程?为什么喜欢这一门?对该岗位有何助力?📚8. 用三个词,总结一下这几年自己大学的经历...
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
这个实习生我要给他转正
9051
2
...
27四非本,字节后端实习OC
4755
3
...
没有家庭的托举,我只能靠自己
4430
4
...
制造业求职 0 offer 时期的破局之道
3567
5
...
如何做好汇报:让努力被看见、让成果更有价值
3391
6
...
以Mentor视角,说说我最喜欢什么样的实习生
3350
7
...
选offer,就看这四点!
3309
8
...
10.19百度笔试
2555
9
...
双非鼠鼠的秋招精神状态
2439
10
...
途虎养车嫡长意向
2423
创作者周榜
更多
正在热议
更多
#
26届秋招公司红黑榜
#
4126次浏览
10人参与
#
你觉得mentor喜欢什么样的实习生
#
5184次浏览
171人参与
#
平安产险科技校招
#
2055次浏览
0人参与
#
校招泡的最久的公司是哪家?
#
1297次浏览
8人参与
#
实习必须要去大厂吗?
#
144791次浏览
1521人参与
#
入职第一天,你准备什么时候下班
#
84554次浏览
464人参与
#
未岚大陆求职进展汇总
#
22944次浏览
106人参与
#
技术岗笔试题求解
#
94835次浏览
1101人参与
#
没有家庭托举的我是怎么找工作的
#
6867次浏览
104人参与
#
最难的技术面是哪家公司?
#
54014次浏览
891人参与
#
度小满求职进展汇总
#
8043次浏览
41人参与
#
求职低谷期你是怎么度过的
#
2930次浏览
64人参与
#
从哪些方向判断这个offer值不值得去?
#
3273次浏览
68人参与
#
你有哪些缓解焦虑的方法?
#
36656次浏览
835人参与
#
工作压力大怎么缓解
#
117107次浏览
1108人参与
#
独居后,你的生活是更好了还是更差了?
#
27613次浏览
263人参与
#
机械人的工作环境真的很差吗
#
24230次浏览
118人参与
#
我对___祛魅了
#
134620次浏览
744人参与
#
哪些瞬间让你真切感受到了工作的乐趣
#
15073次浏览
70人参与
#
我的求职进度条
#
141845次浏览
1613人参与
#
打工人的工作餐日常
#
69646次浏览
505人参与
#
你现在会用到哪些AI技能?
#
13083次浏览
109人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务