首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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-15 18:22
吉首大学张家界学院 Java
专升本简历想找java开发怎么写啊,要带上专科学历吗
项目就网上教学项目改了一下
点赞
评论
收藏
分享
10-14 16:35
门头沟学院 客户端其它
京东挂
寄予厚望的京东也挂了 从八月到现在,陆陆续续投,陆陆续续面…… 结果却是0offer,我裂开
投递京东等公司10个岗位
点赞
评论
收藏
分享
昨天 21:56
门头沟学院 前端工程师
两段实习终究 是败了
为什么九月到现在都没有面试?就因为我是双非吗?求大佬提提简历意见
牛客解忧铺
点赞
评论
收藏
分享
10-01 08:59
已编辑
西南大学 C++
🐧什么时候才发意向啊🤕
有谁跟我一样腾讯实习转正后录用评估了一个月还没有发意向的嘛
点赞
评论
收藏
分享
10-17 16:05
大连海事大学 测试工程师
海尔智造技术工程师电话面
第一次收到电话面试,我不太清楚这个是面试还是说确认流程,全程15分钟1,询问我的课题和项目基本情况?2,总部在青岛,能否接受在青岛工作?3,了解我更偏向研发之后,建议说可以投研发那边的岗位,然后介绍智造技术工程师需要进行的业务,说这个岗位就是进厂里面,然后偏制造类的,像机械啊,然后工艺工程这种,然后需要用CAD进行画图啥的,研发的部分占比非常小4,我看你的期望城市投的是武汉,我们这边会同步把你的简历推给武汉那边的部门,然后后续合适的话,会有视频面试面试官很温柔,感觉有真的被考虑到我的核心需求(但是我一志愿投的就是海尔软件测试呀,给我简历挂了(´-﹏-`;))
查看2道真题和解析
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
这个实习生我要给他转正
8089
2
...
双非鼠鼠的秋招精神状态
4603
3
...
没有家庭的托举,我只能靠自己
4222
4
...
27四非本,字节后端实习OC
4124
5
...
以Mentor视角,说说我最喜欢什么样的实习生
3404
6
...
制造业求职 0 offer 时期的破局之道
3302
7
...
如何做好汇报:让努力被看见、让成果更有价值
3270
8
...
小红书商业技术
2965
9
...
选offer,就看这四点!
2489
10
...
10.16 极兔速递 后端开发管培生 HR面
2487
创作者周榜
更多
正在热议
更多
#
26届秋招公司红黑榜
#
8427次浏览
28人参与
#
实习必须要去大厂吗?
#
145635次浏览
1532人参与
#
平安产险科技校招
#
2223次浏览
0人参与
#
校招泡的最久的公司是哪家?
#
3357次浏览
16人参与
#
度小满求职进展汇总
#
9477次浏览
49人参与
#
帮我看看,领导说这话什么意思?
#
3384次浏览
21人参与
#
未岚大陆求职进展汇总
#
23474次浏览
108人参与
#
职场新人体验
#
94466次浏览
639人参与
#
你觉得mentor喜欢什么样的实习生
#
8422次浏览
251人参与
#
没有家庭托举的我是怎么找工作的
#
10639次浏览
156人参与
#
入职第一天,你准备什么时候下班
#
85114次浏览
467人参与
#
从哪些方向判断这个offer值不值得去?
#
5430次浏览
88人参与
#
技术岗笔试题求解
#
95130次浏览
1101人参与
#
求职低谷期你是怎么度过的
#
4338次浏览
81人参与
#
最难的技术面是哪家公司?
#
54564次浏览
893人参与
#
面试紧张时你会有什么表现?
#
1175次浏览
20人参与
#
独居后,你的生活是更好了还是更差了?
#
27856次浏览
263人参与
#
机械人的工作环境真的很差吗
#
24638次浏览
119人参与
#
秋招想进国企该如何准备
#
97407次浏览
487人参与
#
你有哪些缓解焦虑的方法?
#
36914次浏览
835人参与
#
跳槽时有那些注意事项
#
105838次浏览
567人参与
#
工作压力大怎么缓解
#
117463次浏览
1108人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务