设计模式已死?
设计模式已死软件开发进入 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/7/26 13:19:03 阅读更多 →
明日方舟游戏资源库:2000+高清素材的完整技术解析与专业应用指南

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

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

2026/7/26 13:19:03 阅读更多 →
PKHeX自动合法性插件终极指南:5分钟创建合规对战宝可梦

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

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

2026/7/26 13:18:03 阅读更多 →

最新新闻

3大部署策略+4个实践场景:工业级SCADA/HMI平台FUXA快速上手指南

3大部署策略+4个实践场景:工业级SCADA/HMI平台FUXA快速上手指南

3大部署策略4个实践场景:工业级SCADA/HMI平台FUXA快速上手指南 【免费下载链接】FUXA Web-based Process Visualization (SCADA/HMI/Dashboard) software 项目地址: https://gitcode.com/gh_mirrors/fu/FUXA 在工业自动化和物联网监控领域,我们经…

2026/7/26 13:24:05 阅读更多 →
视频字幕提取神器:3分钟让硬字幕变可编辑文字,本地处理更安全

视频字幕提取神器:3分钟让硬字幕变可编辑文字,本地处理更安全

视频字幕提取神器:3分钟让硬字幕变可编辑文字,本地处理更安全 【免费下载链接】video-subtitle-extractor 视频硬字幕提取,生成srt文件。无需申请第三方API,本地实现文本识别。基于深度学习的视频字幕提取框架,包含字幕…

2026/7/26 13:24:05 阅读更多 →
九大网盘直链下载助手:告别限速,免费获取真实下载地址的完整指南

九大网盘直链下载助手:告别限速,免费获取真实下载地址的完整指南

九大网盘直链下载助手:告别限速,免费获取真实下载地址的完整指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 …

2026/7/26 13:24:05 阅读更多 →
iOS自动化测试实战指南:从XCUITest到Appium,构建高效移动测试体系

iOS自动化测试实战指南:从XCUITest到Appium,构建高效移动测试体系

1. 项目概述:为什么iOS自动化测试是移动开发的“刚需”? 如果你是一名iOS开发者、测试工程师或者正在管理一个移动应用团队,那么“自动化测试”这个词对你来说一定不陌生。它早已不是锦上添花的“可选项”,而是保障应用质量、提升…

2026/7/26 13:24:05 阅读更多 →
Unity UI拖拽功能深度解析:从事件系统原理到八大常见问题解决方案

Unity UI拖拽功能深度解析:从事件系统原理到八大常见问题解决方案

1. 项目概述:为什么UI拖拽是Unity开发中的“高频雷区”? 做Unity开发,尤其是涉及到UI交互,拖拽功能几乎是绕不开的一个坎。无论是背包系统、技能栏、装备栏,还是地图编辑器、关卡编辑器,甚至是简单的列表排…

2026/7/26 13:24:05 阅读更多 →
peg-markdown核心功能揭秘:支持HTML/LaTeX/ODF多格式输出的终极解析工具

peg-markdown核心功能揭秘:支持HTML/LaTeX/ODF多格式输出的终极解析工具

peg-markdown核心功能揭秘:支持HTML/LaTeX/ODF多格式输出的终极解析工具 【免费下载链接】peg-markdown An implementation of markdown in C, using a PEG grammar 项目地址: https://gitcode.com/gh_mirrors/pe/peg-markdown peg-markdown是一款用C语言实现…

2026/7/26 13:23:05 阅读更多 →

日新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/26 0:00:31 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/26 0:00:31 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/26 0:00:31 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/26 0:00:31 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/26 0:00:31 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/26 0:00:31 阅读更多 →

月新闻