秋招准备-观察者模式学习

问题的定义和发现过程:
今天在做毕业设计的项目,发现两个系统之间可能存在耦合。一开始的想法是使用事件的方式来解耦。后来发现不仅这两个系统之间存在耦合,也普遍存在于其他系统间。

解决方法的联想和具体方案:
正好最近在看面经,发现大家大部分情况都被问到了设计模式,所以就想着看看啥设计模式可以解决这个问题。最后选择了观察者模式。

于是就去google了一下什么观察者模式,就我浅显的一个小时了解之后,用我个人的话来理解就是:
观察者模式可以理解为有一些类(类1),他们的行为在设计上会影响别的类(类2、3、4)。但是我们需要在开发过程正避免类2、3、4直接调用类1的某些字段来更新状态,导致耦合。所以我们可以实现一个发布者接口,让类1实现这个接口,同时实现一个订阅者接口,让类2、3、4实现这个接口。另外需要类1维护一个动态的订阅者列表,在类1的某些状态改变的时候,通过事件发布给所有依赖于这个状态的订阅者。这样订阅者就可以避免通过直接访问发布者某些字段的行为来改变自己的特定状态,达到解耦的目的。

(我对接口和事件的知识还比较浅,而且是刚刚了解了观察者模式,如果有理解错误欢迎指出,写这个贴子目的在于记录自己的每日学习,并且锻炼结构化思考问题的能力。)
资料参考:
https://refactoringguru.cn/design-patterns
https://www.runoob.com/design-pattern/observer-pattern.html
全部评论

相关推荐

从事 AI 岗位的技术栈,核心取决于你选择的细分方向—— 是偏向算法研发的 “造轮子” 岗,还是侧重工程落地的 “用轮子” 岗。两者的技能要求差异很大,但底层基础是相通的。这里举一个例子,大模型应用开发岗(最适合后端转型,门槛低、需求大)这是目前企业招聘最多的 AI 岗,核心是 “用现成大模型解决业务问题”,不用自己训练模型,和后端开发的工程思维高度契合。核心框架与工具如下:LangChain:大模型应用开发的 “瑞士军刀”,必须吃透。重点学文档加载、文本分割、向量存储、检索链(RAG)搭建、工具调用(Function Call)。向量数据库:RAG 的核心组件,掌握 Chroma(轻量,适合入门)、Milvus(分布式,适合生产)、Pinecone(云服务),理解向量相似度计算原理。大模型调用:熟悉主流大模型 API(GPT-3.5/4、文心一言、通义千问、Kimi),掌握参数调优、Prompt 工程技巧。工程化能力如下:后端技能直接复用:用 Spring Boot/FastAPI 封装大模型接口,实现鉴权、限流、日志监控。容器化部署:用 Docker 打包应用,K8s 做集群管理,保证服务高可用。数据处理:掌握文本清洗、去重、脱敏,处理大模型的输入输出数据。进阶技能如下:Agent 开发:基于 LangChain 或 AutoGPT,实现多智能体协作、任务规划,比如 “代码调试 Agent”“简历优化 Agent”。Prompt 工程:学会编写精准的指令,比如 “作为 Java 后端工程师,帮我优化这段 SQL 语句,要求时间复杂度降到 O (n)”,理解零样本 / 少样本提示、思维链(CoT)技巧。
从事AI岗需要掌握哪些技...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务