TGViewer
开发者工具箱|编程·开发工具·资源 开发者工具箱|编程·开发工具·资源 @devtoolboxhub · 570 subscribers
Post #1384 11
迟来的后端模式清单

一位开发者回顾早期职业生涯,发现真正提升代码质量的不是学会更多新技术,而是识别并运用常见后端设计模式。以下是他认为最值得掌握的10种模式。

1. Repository 模式:将数据访问逻辑与业务逻辑分离。控制器不再直接写SQL,而是通过 user_repository.get_user(id) 统一操作。更换数据库时业务层无需改动。

2. Service Layer 模式:把业务规则从控制器中抽离。控制器只负责“如何接收请求”,Service 层处理余额校验、账户验证、费用计算等核心逻辑。业务变化时只需更新Service。

3. 依赖注入:不直接在类内部创建依赖(如 self.database = PostgreSQL()),而是通过构造函数传入。测试时可替换为 mock,提高灵活性。

4. Observer 模式:事件驱动——用户注册后,系统广播事件,邮件服务、分析服务、通知服务各自监听响应。发送方无需知道谁在监听。

5. Strategy 模式:替代冗长的 if-else 条件。例如支付方式,将每种支付策略封装成独立类,新增方式只需新增策略类,不修改原有代码。

6. Factory 模式:集中管理复杂对象的创建逻辑。例如根据配置创建不同通知渠道(Email、SMS、Push),应用只需请求“给我一个通知”。

7. Queue 模式:将实时操作与后台任务分离。用户上传头像后,立即返回;后台队列处理图片缩放、缩略图生成等耗时操作,提升响应速度和可靠性。

8. Cache-Aside 模式:读取前先查缓存,命中直接返回;未命中再查数据库并写回缓存。减少重复数据库查询,但需注意缓存与数据库的同步。

9. Circuit Breaker 模式:当依赖的外部服务持续失败时,暂时停止请求,给其恢复时间,防止故障蔓延。分布式系统中关键容错手段。

10. Middleware 模式:将认证、日志、限流等横切关注点从每个端点中抽离,通过请求管道统一处理。增加功能时无需修改每个组件。


最终要点:模式不是规则,而是工具——应减少复杂度,而非增加。最大的价值在于提供团队共享的沟通语言:“这里需要一个 Observer 模式”所有人立刻理解架构方向。

#开发者 #工具 #后端 #设计模式 #架构 #系统设计 #Repository #ServiceLayer #依赖注入 #Observer #Strategy #Factory #Queue #CacheAside #CircuitBreaker #Middleware
@DevToolboxHub
More from @devtoolboxhub
  1. Sep 30, 2026AMSI 绕过技术 2026 开发者指南 AMSI(Antivirus Malware Scan Interface)是 Windows 的恶意脚本扫描接口,覆盖 PowerShe…
  2. Sep 30, 2026AI Agent 为什么记不住事 和 AI Agent 协作时最容易注意到的一点是:它们很擅长回答问题,却不擅长记住昨天发生过什么。你可以和它长聊一轮,做出一堆决定、说明偏好、一起…
  3. Sep 30, 2026wpipe:面向 Python 开发者的轻量编排库 wpipe 是一个纯 Python 可嵌入的编排库,目标是让数据管道的开发回到「编辑—运行—调试」的快速循环,而不必为验证业务逻…
  4. Sep 29, 20262,916 个 AI 网站 8 月流量:转录与图生 3D 起飞 Anjin Radar 追踪了 2,916 个 AI 网站的月度访问量,数据截至 2026 年 9 月 28 日。访…
  5. Sep 29, 2026Python 虚拟环境其实是个软链接 在 Linux 和 macOS 上执行 python3 -m venv .venv,并不会复制一份 Python。venv 里的 python…
  6. Sep 29, 2026Will It Focus:相机自动对焦兼容性查询 Agent 这是一个面向摄影器材的自动对焦兼容性查询工具,但它真正的看点在于工程实现:如何让模型引用厂商原文时,保证引用的确实是…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →