首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
06-18 18:23
成都大学 Java
华为od定级D2,大无语
21届本科,目标院校 技术面两轮随便问了几个问题就开撕算法题,都撕出来了,结果给个D2,这不是玩我呢么
点赞
评论
收藏
分享
05-08 09:14
天津理工大学 Java
求Java后端简历锐评,不玻璃心
两个月就约到两个面试,第一个还是给我挤出来的名额(八股不充分寄了),第二个听说风评不好(氛围不行),我这简历还缺点什么呀大佬们
牛客397652159号:
sky-take-out
应届生简历当中,HR最关注哪些?
投了多少份简历才上岸
点赞
评论
收藏
分享
05-11 19:19
河南科技大学 Java
实习……
26届,从来没实习过,求建议 前辈们
无、:
不能吧黑马点评删了吗
点赞
评论
收藏
分享
不愿透露姓名的神秘牛友
06-18 22:30
前端已崩
我看都是谁在卷前端!
秋盈丶:
搜了下,20人的公司能收到2000份招呼?真有这么夸张吗
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
27届 两进字节!!从计算机小白开始的打怪升级之路!!
1.6W
2
...
27 届前端鼠鼠拿下 3 家大厂 OC,拒 6 面的上岸攻略
9630
华为开奖进展
热聊中
3
...
字节即将LastDay以及大模型应用开发看法
6946
4
...
大家的简历放照片吗?
6767
5
...
临近暑期实习但技术简历还没写好?大厂学长教你怎么写
5756
6
...
请问, 腾讯云智是大厂吗?
4815
7
...
正在实习的你一定要知道的几件事
4173
8
...
和女朋友双双进入字节!
3838
9
...
拒了字节约面好爽
3189
10
...
史上最细SQL实战系列:基础知识篇
3129
创作者周榜
更多
正在热议
更多
#
你找实习最大的坎坷是什么
#
23948次浏览
300人参与
#
蔚来工作体验
#
17907次浏览
67人参与
#
实习最想跑路的瞬间
#
17628次浏览
135人参与
#
如果可以,你希望哪个公司来捞你
#
91244次浏览
382人参与
#
我的职场心眼子段位
#
16242次浏览
449人参与
#
机械/汽车制造公司爆料
#
40236次浏览
208人参与
#
比亚迪精密制造工作体验
#
19729次浏览
39人参与
#
比亚迪工作体验
#
58334次浏览
235人参与
#
机械制造公司评价
#
118025次浏览
302人参与
#
理想汽车工作体验
#
30532次浏览
274人参与
#
对妈妈没说出口的话
#
45026次浏览
761人参与
#
大疆今年的机械笔试难吗?
#
40973次浏览
452人参与
#
机械制造2023笔面经
#
118606次浏览
756人参与
#
春招别灰心,我们一人来一句鼓励
#
113048次浏览
1294人参与
#
秋招投简历越早越好吗
#
66426次浏览
630人参与
#
这些公司卡简历很严格
#
37940次浏览
190人参与
#
职业发展规划如何回答
#
37957次浏览
236人参与
#
我的求职精神状态
#
90480次浏览
1051人参与
#
市场营销人求职交流聚集地
#
120739次浏览
1089人参与
#
机械人,你被简历秒挂的企业有哪些?
#
41044次浏览
275人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务