设计模式已死?
设计模式已死软件开发进入 AI 时代以后自动生成、自动补全、自动重构成了一种新潮。年轻程序员们开始学习如何拆分任务审查 AI 输出管理上下文多 Agent 并行面试也从古法编程的刷题变成了如何让 AI 稳定生成可维护代码于是有老师傅哀叹设计模式已死。可新人们却无动于衷因为他们现在关心的是 Harness。可真当你去深入研究多 Agent 系统时你会发现AI 自发地演化出了一套类似设计模式的结构就连 Harness 本身也跟设计模式有莫大的关联性。当 AI 系统拥有足够复杂的任务和自治能力时它最终会收敛到与人类工程设计相同的底层抽象某些组织方式会不可避免地再次出现。这或许对当下的 AI FOMO 焦虑有一种神奇的治愈作用不管编程范式如何变化经典始终是经典。所以咱们今天试着沉下心来抛开 AI 的浮躁重新去回顾一下设计模式的经典吧01 单例模式Singleton Pattern单例模式是一种创建型设计模式它限制了实例化类的对象个数确保在任何情况下一个类只有一个实例并且提供一个全局访问点。这种模式在需要全局状态控制或共享资源访问时非常有用。特点只有一个实例对象。必须自行创建实例对象。必须提供一个访问该实例的全局访问点。优点确保在应用中资源或状态的全局唯一性。减少系统资源消耗提高系统效率。缺点反模块化因为单例对象需要被多个客户端引用这违反了高内聚低耦合的设计原则。难以测试因为单例对象的生命周期与应用相同这使得在单元测试中进行隔离测试变得困难。应用场景配置管理器在应用程序中配置信息通常只需要一个实例来管理这样可以保证配置信息的一致性。连接池数据库连接池需要限制数据库连接的数量以避免过多的连接消耗资源。日志记录器日志系统通常只需要一个实例来记录应用程序的日志信息以避免日志信息的冗余和混乱。硬件管理器对于某些硬件设备如打印机或扫描仪可能只需要一个管理器来控制对它们的访问。应用状态管理在某些应用中需要全局的状态管理如用户会话管理或权限验证状态。// 定义一个结构体Singleton用于存储单例的实例数据在并发环境下如果没有适当的同步机制多个 goroutine 可能会同时检测到instance为nil并尝试创建新的实例从而导致创建多个实例。为了解决这个问题可以使用sync.Once它确保在并发环境中只执行一次初始化操作。// 定义一个结构体Singleton用于存储单例的实例数据02 工厂模式Factory Pattern工厂模式是一种创建型设计模式用于将对象的创建过程封装起来由子类决定实例化哪一个类。这种模式使得代码结构更加清晰并且能够轻松替换或扩展产品类。特点封装性将对象的创建过程封装在工厂类中。扩展性通过继承和多态可以轻松地添加新的产品类。抽象性工厂方法定义了创建对象的接口但具体对象的创建由子类实现。优点将对象的创建和使用分离提高了模块间的独立性。易于扩展增加新的产品类时不需要修改现有代码符合开闭原则。缺点每增加一个产品类就需要增加一个具体的工厂类这可能会导致类的数量急剧增加。工厂类集中了所有实例的创建逻辑可能会导致工厂类过于庞大。应用场景数据库连接根据不同的数据库类型如 MySQL、PostgreSQL创建相应的数据库连接对象。GUI 组件在图形用户界面开发中不同的操作系统可能需要不同的组件实现工厂模式可以根据不同平台创建相应的组件。支付网关根据不同的支付方式如信用卡、PayPal、微信支付创建相应的支付处理对象。图像处理在图像处理软件中根据不同的文件格式如 JPEG、PNG创建相应的图像处理器。// 定义一个接口Product它声明了所有具体产品对象必须实现的操作03 观察者模式Observer Pattern观察者模式是一种行为设计模式它定义了对象间的一种一对多的依赖关系使得当一个对象改变状态时所有依赖于它的对象都会得到通知并自动更新。这种模式非常适合于实现分布式事件处理系统。特点一对多关系一个主题可以有多个观察者。抽象耦合观察者和主题之间是抽象耦合的增加新的观察者不会影响现有的系统。动态联动观察者可以在任何时候加入或退出。优点降低了对象之间的耦合度主题与观察者之间是松散耦合的。扩展性好增加新的观察者或主题类不影响现有的类。缺点当观察者对象很多时通知的分发可能会造成性能问题。如果观察者和主题之间的依赖关系过于复杂会导致系统难以维护。应用场景事件监听系统在 GUI 应用程序中用户界面组件如按钮、文本框等可以作为观察者监听用户的输入事件。UI 更新在应用程序中当数据模型发生变化时界面需要相应地更新使用观察者模式可以自动完成这一过程。消息系统在即时通讯软件中当有新消息到达时所有在线的用户观察者都会收到通知。股票市场股票价格更新时所有订阅了该股票的投资者观察者都会收到最新价格信息。资源监控在系统监控工具中当系统资源如 CPU、内存使用率超过设定阈值时监控系统观察者会收到通知并采取相应措施。// 定义Observer接口它声明了观察者需要实现的Update方法04 装饰者模式Decorator Pattern装饰者模式是一种结构型设计模式允许用户在不修改对象自身的基础上通过添加装饰者对象来动态地给对象添加额外的职责或功能。特点动态扩展可以在运行时动态地给对象添加职责。透明性装饰者模式不改变对象的接口因此对客户端来说是透明的。灵活性可以多个装饰者组合使用为对象添加多个职责。优点增加对象的职责是动态的、可撤销的。可以用多个装饰者包装一个对象添加多个职责。装饰者和对象可以独立变化不会相互耦合。缺点过度使用装饰者模式可能会使系统变得复杂难以理解。可能会引起多层装饰者调用影响性能。应用场景日志记录在不修改原有对象的基础上添加日志记录功能。缓存为对象的某些方法添加缓存功能以提高性能。安全控制为对象添加访问控制如权限检查。事务处理为数据库操作添加事务管理功能。性能监控为对象的方法添加性能监控功能以分析性能瓶颈。资源管理为资源使用添加额外的管理功能如连接池的管理。// 定义Component接口它是所有组件和装饰者的基类05 策略模式Strategy Pattern策略模式是一种行为设计模式它定义了一系列的算法并将每一个算法封装起来使它们可以互相替换。策略模式让算法独立于使用它的客户端。特点封装变化将变化的部分封装起来与稳定部分分离。多态性使用多态来实现算法的替换。替换性在运行时选择使用哪个策略。优点算法的变化独立于使用算法的客户端。容易添加新算法而不影响客户端。缺点客户端必须了解所有策略类的差异以便使用适当的策略。应用场景算法选择在应用程序中根据不同的业务需求选择不同的算法。支付方式在电子商务平台根据用户选择提供不同的支付方式。排序算法在数据处理中根据不同的数据特性选择不同的排序算法。路径查找在地图服务中根据不同的优化标准如时间最短、距离最短选择不同的路径查找算法。游戏 AI在游戏开发中不同的敌人或角色使用不同的 AI 策略。// 定义Strategy接口它声明了所有具体策略必须实现的algorithm方法06 适配器模式Adapter Pattern适配器模式是一种结构型设计模式用于使原本不兼容的接口能够一起工作。它通常涉及到一个客户端使用一个期望的特定接口而另一个类或组件提供了一个不同的接口。适配器模式通过创建一个中间层适配器将一个类的接口转换成客户端期望的另一个接口。特点接口转换适配器模式提供了将一个类的接口转换成另一种接口的方式。兼容性解决了接口不兼容的问题使得原本不能一起工作的类可以协同工作。优点增加了类的兼容性使得它们可以一起工作即使它们的接口不兼容。客户端代码不需要修改通过适配器与目标类交互。缺点过度使用适配器模式可能会使系统变得复杂难以理解和维护。适配器可能会引入性能开销尤其是在需要频繁调用适配器方法的情况下。应用场景不同系统的集成当需要将两个使用不同接口的系统集成时可以使用适配器模式。第三方库的集成当使用一个第三方库但其接口与现有系统不兼容时可以通过适配器模式进行集成。硬件设备控制在硬件设备控制领域不同的设备可能有不同的控制接口适配器模式可以用来统一这些接口。新旧系统迁移在新旧系统迁移过程中旧系统中的组件可能需要适配新系统的接口。模块化设计在模块化设计中适配器模式可以用来连接不同模块即使它们的接口不兼容。// 定义Target接口表示客户端使用的特定领域相关的接口07 代理模式Proxy Pattern代理模式是一种结构型设计模式它为另一个对象提供一个代替或占位符以控制对它的访问。代理可以在不改变对象的代码前提下通过引入代理对象来间接访问原始对象从而在不直接暴露原始对象的情况下提供额外的功能操作。特点间接访问通过代理对象来间接访问原始对象。职责分离将控制逻辑与业务逻辑分离代理对象负责控制逻辑原始对象负责业务逻辑。延迟初始化代理可以在需要时才创建原始对象实现延迟初始化。优点降低了系统的耦合度增强了对象的可控性。可以为原始对象提供额外的安全控制或延迟加载等操作。增加了代码的可扩展性可以在不修改原始对象的情况下通过引入新的代理类来扩展功能。缺点增加了系统的复杂性可能会让系统设计变得更加复杂。可能会引入性能开销尤其是在代理对象需要进行复杂控制逻辑时。应用场景访问控制在需要对对象访问进行权限控制时可以使用代理模式。延迟初始化对于资源消耗较大的对象可以使用代理模式实现延迟加载。远程代理为远程对象或网络资源提供代理隐藏对象位于不同地址空间的事实。虚拟代理为复杂的对象创建一个简单的代理以简化访问。保护代理控制对原始对象的访问提供访问前后的附加操作。智能引用在访问对象时进行引用计数当没有引用时自动释放资源。// 定义一个Subject接口它声明了真实主题和代理主题共有的接口。08 命令模式Command Pattern命令模式是一种行为设计模式它将一个请求或操作封装为一个对象。这种模式可以解耦请求的发送者和接收者让它们不直接交互而是通过命令对象来间接进行通信。特点封装性命令模式将请求封装为一个对象隐藏了请求的具体实现细节。扩展性可以方便地添加新的命令类无需修改现有代码。灵活性命令对象可以被存储、传递、排队、记录和修改。优点降低了系统耦合度请求发送者和接收者之间通过命令对象交互。增加了操作的灵活性如支持撤销、重做、事务等操作。易于扩展可以独立地添加新的命令。缺点可能会有大量的命令类特别是命令的实现逻辑复杂时。应用场景事务处理在需要支持事务操作的系统中命令模式可以封装事务请求支持事务的提交和回滚。撤销操作在需要撤销功能的系统中命令对象可以存储状态以便在需要时撤销操作。日志请求在需要记录用户操作的系统中命令对象可以记录操作日志用于审计或恢复操作。批处理系统在批处理系统中命令对象可以表示一个批处理任务支持任务的调度和执行。宏录制在需要宏录制功能的系统中命令对象可以封装一系列操作形成宏命令。// 定义Command接口它声明了所有具体命令必须实现的Execute方法09 组合模式Composite Pattern组合模式是一种结构型设计模式它允许你将对象组合成树状结构以表示部分-整体的层次结构。这种模式使得用户可以一致地对待单个对象和对象组合。特点部分-整体层次结构可以包含其他组合或叶节点形成树状结构。一致性客户端代码可以一致地处理组合结构和叶节点。优点简化了客户端代码客户端可以统一处理组合结构和对象。更好的层次结构表示易于扩展和维护。缺点设计较复杂需要合理地设计组件的接口和类。应用场景文件系统文件系统中的文件和文件夹可以形成树状结构其中文件夹可以包含文件和其他文件夹。组织结构公司的组织结构可以表示为树状结构其中每个部门可以包含员工和其他子部门。GUI 组件在图形用户界面开发中组件可以包含其他组件形成复杂的界面结构。分布式系统在分布式系统中资源可以组合成树状结构以方便管理和访问。企业资源规划ERPERP 系统中产品可以由多个部件组成部件又可以进一步分解为子部件。// 定义Component接口作为组合中对象的一致性协议10 迭代器模式Iterator Pattern迭代器模式是一种行为设计模式它允许你顺序访问一个聚合对象中的各个元素而不需要暴露其内部的表示。迭代器模式提供了一种通过抽象迭代器来遍历元素的方法使得你可以在不知道具体集合类型的情况下对集合进行遍历。特点抽象化遍历过程迭代器定义了遍历元素的接口。支持多种遍历方式不同的迭代器可以实现不同的遍历策略。聚合对象与迭代器解耦聚合对象不需要知道迭代器的具体实现。优点抽象化集合的访问使客户端代码与集合的内部表示无关。可以提供多种遍历方式如正序或逆序遍历。增加了集合的灵活性可以在不修改集合类的情况下引入新的遍历方式。缺点增加了系统的复杂性需要为每个聚合类设计迭代器类。需要额外的代码来实现迭代器。应用场景遍历集合在需要遍历集合元素的系统中迭代器模式提供了一种通用的遍历机制。数据结构在实现复杂的数据结构如树、图等时迭代器模式可以用来遍历结构中的节点。数据库查询在数据库查询中迭代器可以用来逐条访问查询结果。用户界面在用户界面开发中迭代器可以用来遍历界面元素。多维数组访问在需要访问多维数组元素的系统中迭代器可以提供一种顺序访问的方式。// 定义Iterator接口它声明了迭代器必须实现的Next和Current方法

相关新闻

稀疏化扩散Transformer:高效图像生成新方案

稀疏化扩散Transformer:高效图像生成新方案

1. 项目概述:稀疏化扩散Transformer的革新意义 在计算机视觉领域,扩散模型(Diffusion Models)近年来已成为图像生成任务的主流架构。然而随着模型规模的不断扩大,基于Transformer的扩散模型(如DiT&#xff…

2026/10/7 2:44:42 阅读更多 →
明日方舟游戏资源库:2000+高清素材的完整技术解析与专业应用指南

明日方舟游戏资源库:2000+高清素材的完整技术解析与专业应用指南

明日方舟游戏资源库:2000高清素材的完整技术解析与专业应用指南 【免费下载链接】ArknightsGameResource 明日方舟客户端素材 项目地址: https://gitcode.com/gh_mirrors/ar/ArknightsGameResource 作为一款备受瞩目的二次元策略游戏,明日方舟凭借…

2026/10/12 10:06:29 阅读更多 →
PKHeX自动合法性插件终极指南:5分钟创建合规对战宝可梦

PKHeX自动合法性插件终极指南:5分钟创建合规对战宝可梦

PKHeX自动合法性插件终极指南:5分钟创建合规对战宝可梦 【免费下载链接】PKHeX-Plugins Plugins for PKHeX 项目地址: https://gitcode.com/gh_mirrors/pk/PKHeX-Plugins 还在为宝可梦数据合法性验证而烦恼吗?PKHeX-Plugins项目的AutoLegalityMod…

2026/9/29 6:17:07 阅读更多 →

最新新闻

Unity编辑器底层机制与运行时原理详解

Unity编辑器底层机制与运行时原理详解

1. 别被“基础”两个字骗了:为什么Unity新手常在第3小时就卡死在编辑器里很多人点开Unity安装包时,心里想的是“不就是拖拖拽扭、放放模型、点点播放键吗”,结果三小时后盯着控制台里一串红色报错发呆——“NullReferenceException: Object r…

2026/10/14 8:50:30 阅读更多 →
国产AI算力地基:Runtime/Compiler/Driver三位一体开源框架

国产AI算力地基:Runtime/Compiler/Driver三位一体开源框架

1. 这不是模型发布,而是一次算力基建的静默升级 “致敬,DeepSeek 最新开源的不是模型,是国产算力的地基”——这句话在技术圈刷屏时,我正调试一套国产AI推理服务集群。没有发布会、没有PPT、没有参数对比图,只有一份干…

2026/10/14 8:50:30 阅读更多 →
Kafka IDEA实操入门:从零搭建可调试消息系统

Kafka IDEA实操入门:从零搭建可调试消息系统

1. 项目概述:为什么一个Kafka入门教程要特别强调IDEA操作? “【菜鸟教程】Kafka消息队列入门下(IDEA操作Kafka)”这个标题看似平实,但藏着三个关键信号:第一,“菜鸟教程”不是指内容浅薄&#x…

2026/10/14 8:50:30 阅读更多 →
rh2288hv2固件升级实战:BIOS与BMC刷写顺序、避坑与救砖指南

rh2288hv2固件升级实战:BIOS与BMC刷写顺序、避坑与救砖指南

简介:这份资源是华为 RH2288HV2 服务器的 BIOS 与 BMC 固件升级包,版本为 7.38,面向负责服务器运维、机房管理及硬件维护的技术人员。BIOS 负责硬件初始化与系统引导,BMC 承担远程监控与带外管理,二者同步更新可提升启…

2026/10/14 8:50:30 阅读更多 →
充电站选址优化:混合整数规划与遗传算法的工程实践

充电站选址优化:混合整数规划与遗传算法的工程实践

简介:这是一份围绕电动汽车充电站选址优化问题的学术论文,聚焦新能源汽车配套设施规划中的关键问题,适合交通规划、电气工程及新能源领域的研究人员、相关专业学生和从业者参考。文档从充电需求点分布、服务半径与最大服务数量等角度出发&…

2026/10/14 8:50:30 阅读更多 →
[玩转大模型] 第十一篇:售卖自己的 Skill——买断、订阅、定制、开源+付费增强,四条路到底哪条能收到钱

[玩转大模型] 第十一篇:售卖自己的 Skill——买断、订阅、定制、开源+付费增强,四条路到底哪条能收到钱

💡 上一篇我把自己的 Skill 仓库摊开做体检,结论挺难看:十二个 Skill,三个连 name 和目录名都对不上。但那篇文章里还藏着一个我没回答的问题——既然整理到能公开了,那能不能顺便收点钱? 我认真查过这件事…

2026/10/14 8:49:29 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →