设计模式 · 超越 GoF 的 169 个 · 详细介
Beyond GoF · 169 Patterns Detailed

超越 GoF 的 169 个模式:逐模式详细介

主线《设计模式:从 23 到 192》只深度剖析了 GoF 三族。本文补全其余 169 个(Open 仓库实测:191 个含 pom.xml 的 Maven 模块 + 有独立 README 的 naked-objects,剔除 assets 资源目录与 localization 国际化目录这两个非模式目录)——按 9 条真实主线分组,每个模式给「核心意图 + 适用场景 + 关联」三段式卡片,并配主线示意图。模式定义参考 java-design-patterns.com 与 refactoring.guru。

数据源:iluwatar/java-design-patterns 主线:9 条 模式:169(=192−23) 整理:2026-09-22 ← 返回主文

00总览:169 从哪来

GoF 的 23 全部落在「对象级」;其余 169 几乎都出现在并发、架构、企业数据、函数式与云原生这几条 1994 年尚未命名的尾巴上。下图按仓库真实分组统计分布。

169 个非 GoF 模式 · 按 9 组分布(含 naked-objects) 创建型延伸 10 结构型延伸 10 行为型延伸 12 并发与线程级 21 架构级 40 企业集成与数据 29 函数式与基础 22 云原生 · 韧性 · 分布式 13 测试 · UI · 杂项 12 注:主线图3 的「21/40/29/23/56」为五主线约数;此处按仓库真实分组统计。
图 0 · 169 个非 GoF 模式按 9 组分布(创建延伸 10 / 结构延伸 10 / 行为延伸 12 / 并发 21 / 架构 40 / 企业数据 29 / 函数式 22 / 云原生 13 / 杂项 12 = 169)。
读法:分组口径以 Open 仓库真实模块为准(191 个含 pom.xml 的 Maven 模块 + 有独立 README 的 naked-objects,剔除 assets 资源目录与 localization 国际化目录这两个非模式目录,共 192 模式),与主线图3 的「21/40/29/23/56」约数拆分互为对照——图3 是五主线宏观视角,本文是仓库级微观视角。

01创建型延伸 Creational extensions

对象「怎么生、生命周期怎么管」——GoF 之外围绕工厂变体、依赖装配、池化与懒加载展开的 10 个模式。

C1抽象文档abstract-document

核心意图:用键值对动态承载对象属性,避免为每种文档建子类。

适用场景 · 文档结构多变、需运行时增删字段时。

关联:与 桥接 / 组合 共享『动态结构』思路。

C2依赖注入dependency-injection

核心意图:由容器在运行时把依赖装配进对象,调用方不自己 new。

适用场景 · 需解耦高层与底层、便于测试替换依赖时。

关联:创建型终点,落实 依赖倒置 DIP。

C3工厂factory

核心意图:用统一工厂方法封装对象创建,向调用方隐藏具体类型。

适用场景 · 创建逻辑集中、产品类型易变时。

关联:工厂方法 的轻量变体。

C4工厂套件factory-kit

核心意图:用枚举 + lambda 注册一批工厂,按需取用。

适用场景 · 产品族较多且创建方式相似时。

关联:抽象工厂 的紧凑实现。

C5懒加载lazy-loading

核心意图:真正用到时才创建或取值,延迟昂贵操作。

适用场景 · 大对象、远程资源、图片等按需加载。

关联:与 虚拟代理 同思路。

C6单态monostate

核心意图:多实例共享同一静态状态,对外表现得像多个对象。

适用场景 · 需要『逻辑单例』但不想限制实例数量时。

关联:单例 的变体。

C7多例multiton

核心意图:按 key 维护一组受控命名实例(如枚举实例)。

适用场景 · 需少量命名且受控的实例集合时。

关联:单例 按 key 泛化。

C8对象池object-pool

核心意图:复用昂贵对象(连接/线程),避免反复创建与销毁。

适用场景 · 资源创建成本高、并发借还频繁时。

关联:与 线程池 同源。

C9步骤建造者step-builder

核心意图:用流式、类型安全的 API 分步构造复杂对象。

适用场景 · 构造参数多、部分必填且需校验时。

关联:建造者 的类型安全进化。

C10DAO 工厂dao-factory

核心意图:按数据源类型创建对应的数据访问对象。

适用场景 · 多数据源 / 多 ORM 切换场景。

关联:抽象工厂 在持久层落地。

02结构型延伸 Structural extensions

对象『怎么拼成更大结构』——在 GoF 七结构模式之外,关于视图组合、转换、转发与代理进化的 10 个模式。

S1复合视图composite-view

核心意图:把页面拆成可复用的子视图再组合渲染。

适用场景 · Web 页面由多个组件拼装时。

关联:组合 在视图层的落地。

S2组合实体composite-entity

核心意图:把一组相关实体作为整体持久化 / 传输。

适用场景 · 聚合根跨多表一致性场景。

关联:组合 + 实体。

S3转换器converter

核心意图:在两层模型间做一对一字段映射(如 DO↔DTO)。

适用场景 · 分层间对象转换、避免手工 getter/setter。

关联:适配器 的专用化。

S4委托delegation

核心意图:把请求转发给另一个对象处理,自身只做转发。

适用场景 · 复用他者能力而不继承时。

关联:与 代理 / 装饰器 共享转发思路;落实 组合优于继承。

S5前端控制器front-controller

核心意图:用单一入口统一处理请求(路由 / 视图分发)。

适用场景 · Web 框架的请求总入口。

关联:与 服务层 / 拦截过滤器 协作。

S6标记接口marker-interface

核心意图:用空接口给类打『标签』供框架识别。

适用场景 · 序列化 / 可克隆等元数据标记。

关联:现代多被 注解 取代。

S7私有类数据private-class-data

核心意图:把可变字段封装进内部对象,限制外部修改。

适用场景 · 保护对象内部状态不被误改时。

关联:与 封装 / 不可变 同源。

S8孪生twin

核心意图:用两个协作对象表达『多继承』语义(Java 无多继承)。

适用场景 · 需复用两个不相关类的行为时。

关联:桥接 的特例。

S9虚拟代理virtual-proxy

核心意图:延迟加载真实对象,代理先占位。

适用场景 · 大图 / 远程对象按需加载。

关联:代理 的懒加载分支;与 懒加载 同源。

S10动态代理dynamic-proxy

核心意图:运行时生成代理类统一拦截方法调用。

适用场景 · AOP、统一日志 / 事务 / 鉴权。

关联:代理 + 反射;Spring AOP 基石。

03行为型延伸 Behavioral extensions

职责与沟通归谁——GoF 十一行为模式之外的回调、函数式行为、空对象与访问者去环等 12 个模式。

B1回调callback

核心意图:把『完成后做什么』作为参数传入,异步通知。

适用场景 · 异步任务完成后的处理。

关联:与 观察者 / 命令 同源(策略式传递行为)。

B2集合管线collection-pipeline

核心意图:用 map / filter / reduce 链式处理集合。

适用场景 · 集合批量变换,替代显式循环。

关联:迭代器 + 策略 的函数式合流。

B3指令器commander

核心意图:封装一组命令并统一调度(类似宏)。

适用场景 · 需要组合 / 批量执行操作时。

关联:命令 的批量形态。

B4组合子combinator

核心意图:用小函数组合出更复杂函数(解析 / 校验)。

适用场景 · 可组合的解析或校验逻辑。

关联:与 函数组合 同源。

B5柯里化currying

核心意图:把多参函数变成依次接收单参的函数序列。

适用场景 · 参数复用、偏函数场景。

关联:函数式基础,弱化 策略 必要。

B6流畅接口fluent-interface

核心意图:方法返回 this 形成链式调用。

适用场景 · DSL、构建器风格 API。

关联:与 建造者 同源。

B7函数组合function-composition

核心意图:把多个函数串成管道 f∘g∘h。

适用场景 · 数据变换流水线。

关联:与 集合管线 / 组合子 同源。

B8空对象null-object

核心意图:用无行为对象替代 null,消除空判断。

适用场景 · 缺省行为、避免 NPE。

关联:与 特殊情形 / 策略 同源。

B9仆人servant

核心意图:把一组类共有的操作抽成独立服务类。

适用场景 · 多类共享功能却不愿塞进基类时。

关联:与 委托 同源。

B10规格specification

核心意图:把业务规则封装为可组合的判断对象。

适用场景 · 复杂条件组合查询。

关联:与 策略 / 组合 同源;对应 组合优于继承。

B11蹦床trampoline

核心意图:把递归转成循环 + 暂停,避免栈溢出。

适用场景 · 深递归 / 尾调用优化。

关联:与 迭代器 思路(控制流外提)。

B12无环访问者acyclic-visitor

核心意图:用泛型避免访问者对结构类的反向依赖环。

适用场景 · 需多操作又不污染结构类时。

关联:访问者 的去环变体。

04并发与线程级 Concurrency & Threading

当系统里有多个执行流——如何让它们不互相踩踏。这是 GoF 诞生时尚不存在(或未被命名)的一条长尾,共 21 个模式。

生产者 队列(缓冲) 背压 / 毒丸 / 限流 消费者 线程池 / 反应器 / 活动对象 / 承诺 都建立在这条「解耦速率」的协作之上。
图 4 · 并发与线程级 主线示意图。

C1活动对象active-object

核心意图:把方法调用转成消息,串行化到专属线程执行。

Client Proxy Scheduler ActivationQueue Servant
方法调用被封装成消息入队,由专属线程串行执行;把并发隐藏在对象身后。

适用场景 · 把并发隐藏在对象身后时。

关联:与 命令 / 消息队列 同源。

C2异步方法调用async-method-invocation

核心意图:立即返回 Future,结果稍后取。

调用(立即返回Future) 稍后取值 Caller AsyncMethod Future Result
立即返回 Future 占位,计算在别处进行;稍后通过 Future 取真实结果,不阻塞调用方。

适用场景 · 不阻塞等待的远程 / 重计算。

关联:与 承诺 / Future 同源。

C3背压backpressure

核心意图:下游慢时反向通知上游限流。

适用场景 · 流处理 / 响应式管线。

关联:与 生产者-消费者 协作;落实 节流。

C4拒绝balking

核心意图:对象状态不合适时直接拒绝请求而非等待。

适用场景 · 初始化未完成 / 资源未就绪时的保护。

关联:与 守卫暂停 对照(不等待)。

C5双重检查锁double-checked-locking

核心意图:懒加载单例的并发安全写法。

适用场景 · 延迟初始化且高并发。

关联:单例 的并发坑;警示 可见性。

C6分治并行fork-join

核心意图:把任务拆成子树、结果合并。

适用场景 · 可递归分解的并行计算。

关联:与 map-reduce 同源(分治)。

C7守卫暂停guarded-suspension

核心意图:条件不满足时线程等待直至满足。

适用场景 · 需等待特定状态再继续。

关联:与 拒绝 对照(等待)。

C8半同步半异步half-sync-half-async

核心意图:异步层收请求、同步层处理,解耦两者。

适用场景 · 高并发服务(如网络框架)。

关联:与 反应器 协作。

C9领导者选举leader-election

核心意图:多副本中选一个主导者避免脑裂。

适用场景 · 分布式主从 / 协调。

关联:与 微服务自注册 协作;落实 共识。

C10领导者-跟随者leader-followers

核心意图:一组线程选一个等事件、其余待命。

适用场景 · 高吞吐事件处理。

关联:与 线程池 对照(省上下文切换)。

C11可锁对象lockable-object

核心意图:把锁与数据封装在一起避免忘解锁。

适用场景 · 需显式锁的共享数据。

关联:与 RAII / 资源获取即初始化 同源。

C12映射归约map-reduce

核心意图:分片 map 后 shuffle-reduce。

适用场景 · 海量数据批处理。

关联:分治;与 fork-join 同源。

C13监视器monitor

核心意图:用互斥 + 条件变量封装线程协作。

适用场景 · 经典管程同步。

关联:与 守卫暂停 同源(语言级同步原语)。

C14乐观离线锁optimistic-offline-lock

核心意图:用版本号检测并发冲突而非长事务。

适用场景 · 长会话 / 离线编辑。

关联:与 版本号 / Unit of Work 协作。

C15毒丸poison-pill

核心意图:用特殊消息通知消费者优雅退出。

适用场景 · 关闭线程池 / 处理管线。

关联:与 生产者-消费者 协作。

C16轮询发布polling-publisher

核心意图:定期拉取变更再推送,降低实时推送压力。

适用场景 · 变更不频繁的通知。

关联:与 发布-订阅 对照(拉 vs 推)。

C17生产者-消费者producer-consumer

核心意图:用队列解耦生产与消费速率。

Producer Queue Consumer
生产者和消费者通过有界阻塞队列解耦,队列满/空时自动背压,平衡速率。

适用场景 · 任务 / 消息缓冲。

关联:背压 / 队列限流 的基石。

C18承诺promise

核心意图:代表未来结果的占位对象,可链式编排。

适用场景 · 异步结果编排。

关联:与 Future / 回调 同源。

C19反应器reactor

核心意图:事件循环 + 非阻塞处理,单线程扛高并发。

Reactor Dispatcher EventHandlerA EventHandlerB Event
Reactor 事件循环接收事件,Dispatcher 分发给对应 EventHandler;单线程串行处理避免锁。

适用场景 · 高并发 I/O(Netty / Reactor)。

关联:与 半同步半异步 对照。

C20线程池thread-pool-executor

核心意图:复用固定线程、限流提交。

submit Client ThreadPool Task WorkerA WorkerB
ThreadPool 复用固定 Worker,Client 提交 Task;避免反复创建线程,控制并发度。

适用场景 · 大量短任务。

关联:对象池 在线程上的落地。

C21线程局部存储thread-specific-storage

核心意图:每线程独享一份变量(ThreadLocal)。

适用场景 · 跨方法透传上下文(事务 / 用户)。

关联:与 单例 对照(按线程隔离)。

05架构级 Architectural

把系统本身当成设计对象——代码怎么分层、服务怎么切、UI 怎么组织。共 41 个模式,是 1994 年之后增长最猛的一条尾巴。

架构模式谱系(依赖向内 / 关注点分离) 分层 六边形 整洁 / 洋葱 MVC MVP MVVM / MVI 微服务家族(网关 / BFF / 隔板 / Saga / 自注册)在右侧横向展开,受 CQRS 与事件溯源放大。
图 5 · 架构级 主线示意图。

A1MVCmodel-view-controller

核心意图:模型-视图-控制器分离关注。

适用场景 · 传统 Web / 桌面 UI。

关联:与 关注点分离。

A2MVPmodel-view-presenter

核心意图:用 Presenter 隔离 View 与 Model,便于测试。

适用场景 · 需可测 UI。

关联:MVC 的测试向进化。

A3MVVMmodel-view-viewmodel

核心意图:ViewModel 用数据绑定驱动 View。

适用场景 · WPF / 前端数据绑定。

关联:观察者 + 数据绑定。

A4MVImodel-view-intent

核心意图:单向数据流,Intent→Model→View。

适用场景 · 响应式前端(如 Android)。

关联:与 单向数据流 / Redux 同源。

A5分层架构layered-architecture

核心意图:按层(表现 / 业务 / 持久)隔离。

Presentation Application Domain Infrastructure
依赖严格向下;上层调用下层,下层不反向依赖,形成单向依赖链。

适用场景 · 传统企业应用。

关联:与 关注点分离 / 单一职责。

A6六边形架构hexagonal-architecture

核心意图:端口 + 适配器,业务居中、外围可换。

DriverAdapter «interface» InPort Application «interface» OutPort DrivenAdapter
应用核心居中,左端口接驱动适配器、右端口接被驱动适配器;内外通过端口解耦。

适用场景 · 需易替换基础设施。

关联:落实 依赖倒置 DIP / 接口隔离 ISP。

A7整洁架构clean-architecture

核心意图:依赖指向内层实体,外层可换。

Entities UseCases InterfaceAdapters Frameworks
依赖指向圆心:外层(框架/适配器)依赖内层(用例/实体),内层不感知外层。

适用场景 · 长期演进业务系统。

关联:与 六边形 同源;落实 DIP。

A8洋葱架构onion-architecture

核心意图:同心圆分层,依赖向内。

适用场景 · 与整洁架构等价表述。

关联:整洁架构 的变体。

A9单体架构monolithic-architecture

核心意图:单进程部署所有模块。

适用场景 · 早期 / 小型系统。

关联:与 微服务 对照(演进两端)。

A10事件驱动架构event-driven-architecture

核心意图:用事件解耦生产者与消费者。

适用场景 · 松耦合异步系统。

关联:与 观察者 / 发布订阅 / 事件溯源 协作。

A11事件溯源event-sourcing

核心意图:用事件序列而非当前状态存储。

apply 追加 重放重建 Aggregate EventStore Event
状态不存当前值而存历史事件序列;重建即重放事件,可审计、可回放时间点。

适用场景 · 审计 / 回放 / 时序系统。

关联:与 CQRS 常搭档;落实 不可变。

A12CQRScommand-query-responsibility-segregation

核心意图:读写模型分离各自优化。

适用场景 · 读写负载差异大。

关联:命令查询分离 CQS 的架构放大。

A13Sagasaga

核心意图:把分布式事务拆成本地事务 + 补偿。

失败反向补偿 Saga Step1 Step2 Step3 Compensate
分布式事务拆成本地步骤序列,每步含补偿;失败按逆序补偿,达成最终一致。

适用场景 · 跨微服务一致性。

关联:与 事务性发件箱 协作;落实 最终一致。

A14BFFbackends-for-frontends

核心意图:为不同前端定制聚合后端。

适用场景 · 多端(Web / App)聚合。

关联:与 API 网关 / 聚合器 协作。

A15断路器circuit-breaker

核心意图:失败率超阈即跳闸快速失败。

适用场景 · 防下游故障拖垮调用方。

关联:对 墨菲定律 的工程回应。

A16客户端会话client-session

核心意图:把会话状态放客户端,服务端无状态。

适用场景 · 可水平扩展的会话。

关联:与 服务端会话 对照。

A17服务定位器service-locator

核心意图:集中注册表取依赖(反模式倾向)。

适用场景 · 遗留 / 插件系统。

关联:现代多被 依赖注入 取代。

A18服务层service-layer

核心意图:在领域之上定义应用服务编排用例。

Client Service Domain DAO
Service 编排领域对象与 DAO,向表现层提供粗粒度用例接口,承载应用层事务边界。

适用场景 · 用例编排、事务边界。

关联:与 命令 / 中介者 协作。

A19业务委托business-delegate

核心意图:封装对业务服务的访问细节。

适用场景 · 客户端屏蔽远程调用。

关联:与 代理 / 外观 同源。

A20网关gateway

核心意图:为客户端提供统一访问入口(泛指)。

适用场景 · 系统集成入口。

关联:与 API 网关 同源。

A21大使ambassador

核心意图:用边车代理处理网络 / 观测。

适用场景 · 遗留服务加治理。

关联:与 代理 / 边车 同源(Service Mesh)。

A22绞杀者strangler

核心意图:逐步用新服务替换旧系统。

适用场景 · 遗留系统渐进迁移。

关联:与 防腐层 协作。

A23防腐层anti-corruption-layer

核心意图:在新旧系统间做转换隔离污染。

适用场景 · 集成遗留 / 外部系统。

关联:与 适配器 / 转换器 同源。

A24分离接口separated-interface

核心意图:接口与实现分模块,调用方只依赖接口。

适用场景 · 减编译耦合。

关联:落实 接口隔离 ISP / 依赖倒置。

A25页面控制器page-controller

核心意图:每个页面 / 动作一个控制器。

适用场景 · Web MVC 请求处理。

关联:与 前端控制器 对照(分散)。

A26服务到工作者service-to-worker

核心意图:控制器分发、视图工作者渲染。

适用场景 · Web 请求-渲染。

关联:与 前端控制器 / 视图助手 协作。

A27表示模型presentation-model

核心意图:把 UI 状态抽成可测模型。

适用场景 · 复杂交互 UI。

关联:与 MVVM 同源。

A28模板视图templateview

核心意图:用模板引擎渲染视图。

适用场景 · 服务端页面渲染。

关联:与 视图助手 协作。

A29视图助手view-helper

核心意图:把视图中的逻辑抽成可复用助手。

适用场景 · 视图层减负。

关联:与 委托 / 外观 同源。

A30拦截过滤器intercepting-filter

核心意图:用链式过滤器处理请求(日志 / 鉴权)。

适用场景 · 横切请求处理。

关联:与 责任链 / 装饰器 同源。

A31微服务聚合器microservices-aggregrator

核心意图:把多服务结果聚合成一个响应。

适用场景 · API 聚合。

关联:与 BFF / 组合 同源。

A32微服务网关microservices-api-gateway

核心意图:微服务专属网关(即 API 网关)。

适用场景 · 微服务入口。

关联:见 API 网关。

A33微服务隔板microservices-bulkhead

核心意图:隔离资源池防故障扩散。

适用场景 · 防级联失败。

关联:与 断路器 协作;落实 故障隔离。

A34客户端 UI 组合microservices-client-side-ui-composition

核心意图:前端聚合多服务 UI。

适用场景 · 微前端。

关联:与 BFF 对照(组合位置)。

A35分布式追踪microservices-distributed-tracing

核心意图:跨服务串联请求链路。

适用场景 · 微服务可观测。

关联:与 日志聚合 协作;落实 可观测性。

A36幂等消费者microservices-idempotent-consumer

核心意图:去重保证消息重复不副作用。

适用场景 · 消息重试安全。

关联:对 墨菲定律 / 重试 的回应。

A37过载丢弃microservices-load-shedding

核心意图:过载时主动丢弃低优请求。

适用场景 · 保护核心。

关联:与 限流 / 背压 同源。

A38日志聚合microservices-log-aggregation

核心意图:集中收集分散日志。

适用场景 · 微服务排障。

关联:与 分布式追踪 协作。

A39消息驱动microservices-messaging

核心意图:用消息解耦微服务。

适用场景 · 异步微服务。

关联:与 事件驱动 / 发布订阅 同源。

A40自注册microservices-self-registration

核心意图:服务启动时自动注册到注册中心。

适用场景 · 服务发现。

关联:与 领导者选举 / 注册表 协作。

06企业集成与数据 Enterprise & Data

当关注点从『一个对象』移到『数据怎么存、怎么跨层传输、怎么在分布式下保持一致』——共 28 个模式,是持久层与集成的事实标准词汇。

Controller Service Repository/DAO DB(UoW/标识映射/脏标记) DTO 跨层传输 · 值对象 / 版本号 守边界 · 事务性发件箱保一致
图 6 · 企业集成与数据 主线示意图。

E1DAOdata-access-object

核心意图:封装对数据源的访问,业务不碰 SQL。

适用场景 · 持久层隔离。

关联:与 仓储 / 表网关 同源。

E2数据总线data-bus

核心意图:在组件间共享数据通道。

适用场景 · 低耦合数据共享。

关联:与 事件总线 同源。

E3数据局部性data-locality

核心意图:让计算靠近数据减少移动。

适用场景 · 高性能 / 分布式计算。

关联:与 缓存 / 就近 同源。

E4数据映射器data-mapper

核心意图:在内存对象与 DB 行之间双向映射。

适用场景 · ORM 核心。

关联:与 DAO / 仓储 协作。

E5DTOdata-transfer-object

核心意图:跨层 / 跨网络传输的扁平对象。

适用场景 · 减少调用次数。

关联:与 参数对象 / 值对象 协作。

E6领域模型domain-model

核心意图:用富对象表达业务概念与规则。

适用场景 · 复杂业务。

关联:与 贫血模型 对照;落实 单一职责。

E7脏标记dirty-flag

核心意图:标记改动过才持久化。

适用场景 · 减少无效写。

关联:与 Unit of Work 协作。

E8标识映射identity-map

核心意图:同一会话内同 ID 只加载一次。

适用场景 · 防重复加载 / 不一致。

关联:与 仓储 / 缓存 同源。

E9元数据映射metadata-mapping

核心意图:用元数据驱动对象-表映射。

适用场景 · 通用 ORM / 导入导出。

关联:与 数据映射器 协作。

E10对象母亲object-mother

核心意图:用工厂方法造测试用复杂对象。

适用场景 · 测试夹具。

关联:与 建造者 / 测试工厂 同源。

E11参数对象parameter-object

核心意图:把一组参数包成一个对象。

适用场景 · 方法参数过多。

关联:与 引入参数对象 重构同源。

E12部分响应partial-response

核心意图:只返回客户端要的字段。

适用场景 · 移动端省流量。

关联:与 DTO / 投影 协作。

E13注册表registry

核心意图:集中登记可查的共享对象。

适用场景 · 服务 / 实例发现。

关联:与 服务定位器 / 自注册 协作。

E14仓储repository

核心意图:用集合语义封装聚合的增删查。

Client «interface» Repository ConcreteRepository Entity DAO
Repository 以集合语义屏蔽持久化细节,Client 只操作领域对象;具体仓储走 DAO 落地。

适用场景 · 领域驱动持久化。

关联:与 DAO / 标识映射 协作;落实 依赖倒置。

E15序列化实体serialized-entity

核心意图:把实体序列化为传输格式。

适用场景 · 跨进程传输。

关联:与 DTO / 序列化 LOB 协作。

E16序列化大对象serialized-lob

核心意图:把对象图序列化进单字段存储。

适用场景 · 偶发复杂结构。

关联:与 序列化实体 协作。

E17服务端会话server-session

核心意图:会话状态存服务端。

适用场景 · 需集中会话。

关联:与 客户端会话 对照。

E18服务桩service-stub

核心意图:用假实现替代远程依赖做测试。

适用场景 · 隔离外部依赖测试。

关联:与 测试替身 同源。

E19会话门面session-facade

核心意图:用粗粒度门面减少远程调用。

适用场景 · EJB / 远程会话。

关联:与 外观 同源。

E20单表继承single-table-inheritance

核心意图:一表存整继承层次。

适用场景 · 类层次扁平映射。

关联:与 表继承 / 类表继承 对照。

E21特殊情形special-case

核心意图:用特例对象替代错误 / 空分支。

适用场景 · 消除异常分支。

关联:与 空对象 同源。

E22表继承table-inheritance

核心意图:用表表达类继承(单表 / 类表 / 结合)。

适用场景 · ORM 继承映射。

关联:与 单表继承 协作。

E23表模块table-module

核心意图:以表为中心的业务逻辑类。

适用场景 · 数据集驱动(如报表)。

关联:与 领域模型 对照(贫血)。

E24事务脚本transaction-script

核心意图:每个用例一个过程式处理。

适用场景 · 简单业务。

关联:与 领域模型 / 服务层 对照。

E25事务性发件箱transactional-outbox

核心意图:库内消息表保证写库与发消息一致。

写业务+Outbox(同事务) 轮询Outbox 转发 Service DB Relay MessageBroker
业务写与消息写在同一本地事务,Relay 轮询 Outbox 转发消息,规避「写库成功但发消息失败」的不一致。

适用场景 · 微服务最终一致。

关联:与 Saga / 事件驱动 协作。

E26工作单元unit-of-work

核心意图:跟踪变更一次性提交。

track track commit Client UnitOfWork EntityA EntityB Mapper
UnitOfWork 跟踪一批对象的变更,提交时一次性刷盘,保证聚合内的一致性事务。

适用场景 · 批量持久化 / 事务。

关联:与 脏标记 / 标识映射 协作。

E27值对象value-object

核心意图:无标识、靠属性判等(金额 / 区间)。

适用场景 · 不可变领域值。

关联:与 不可变 同源;落实 值语义。

E28版本号version-number

核心意图:用版本检测并发修改。

适用场景 · 乐观锁。

关联:与 乐观离线锁 协作。

E29预写日志write-ahead-log

核心意图:修改落盘前先写日志,崩溃后可重放恢复。

适用场景 · 存储引擎 / 事务持久性。

关联:与 事务性发件箱 / 事件溯源 同源(持久化顺序)。

07函数式与基础 Functional & Fundamentals

把『行为』当一等公民——不可变、单子、函数组合与基础惯用法,共 22 个模式。它们往往让 GoF 的某些模式变得多余(如策略 → lambda)。

行为即数据:函数组合 / 单子串联 f(x) g h Monad.flatMap 柯里化 / 组合子 / 集合管线 把「策略」「空判断」吸进语言;Optional/Stream 即单子落地。
图 7 · 函数式与基础 主线示意图。

F1不可变immutable

核心意图:创建后不可改,靠新对象表达变化。

适用场景 · 并发安全 / 值对象。

关联:与 值对象 同源;落实 无副作用。

F2静默惯用法mute-idiom

核心意图:用标记接口表达『可安全共享』。

适用场景 · 并发只读共享。

关联:与 不可变 / 标记接口 同源。

F3类型对象type-object

核心意图:用实例表示『类型』而非建子类。

适用场景 · 类型动态增删。

关联:与 原型 / 状态 同源。

F4角色对象role-object

核心意图:把对象在不同时刻扮演的角色分离。

适用场景 · 同一实体多角色。

关联:与 状态 / 策略 同源。

F5扩展对象extension-objects

核心意图:运行时给对象挂扩展行为。

适用场景 · 避免类爆炸式扩展。

关联:与 装饰器 / 访问者 同源。

F6单子monad

核心意图:用容器 + flatMap 串起带上下文的计算(Optional / Stream)。

适用场景 · 链式错误处理 / 异步。

关联:与 函数组合 同源;弱化 空对象 / 空判断。

F7金额money

核心意图:用精确类型表达货币避免浮点误差。

适用场景 · 金融计算。

关联:与 值对象 同源。

F8属性property

核心意图:用键值描述对象特征,动态扩展。

适用场景 · 配置 / 元数据。

关联:与 抽象文档 同源。

F9上下文对象context-object

核心意图:把调用上下文打包传递。

适用场景 · 跨层透传环境信息。

关联:与 参数对象 同源。

F10事件聚合器event-aggregator

核心意图:把多源事件聚合并分发。

适用场景 · 统一事件入口。

关联:与 发布订阅 / 事件总线 同源。

F11事件队列event-queue

核心意图:用队列缓冲事件异步处理。

适用场景 · 解耦事件生产消费。

关联:与 生产者消费者 同源。

F12基于事件的异步event-based-asynchronous

核心意图:用事件驱动异步流程。

适用场景 · 松耦合异步协作。

关联:与 观察者 / 事件驱动 同源。

F13发布订阅publish-subscribe

核心意图:发布者不直连订阅者,靠主题解耦。

pub notify notify Publisher MessageBroker SubscriberA SubscriberB
发布者只发往 Broker,Broker 推送给所有订阅者;发布者与订阅者互不知晓。

适用场景 · 广播通知。

关联:与 观察者 解耦进化。

F14通知notification

核心意图:把多个错误 / 消息聚合返回而非抛异常。

适用场景 · 批量校验反馈。

关联:与 特殊情形 / 规格 同源。

F15环绕执行execute-around

核心意图:用模板把『前置 + 后置』包起来(如锁 / 事务)。

适用场景 · 资源 / 横切管理。

关联:与 模板方法 / 装饰器 / AOP 同源。

F16过滤者filterer

核心意图:用流式条件构建过滤逻辑。

适用场景 · 集合筛选 DSL。

关联:与 规格 / 集合管线 同源。

F17CRTPcuriously-recurring-template-pattern

核心意图:基类以子类为泛型参数做静态多态。

适用场景 · Java 受限(自类型)。

关联:与 模板方法 对照(编译期)。

F18字节码bytecode

核心意图:运行时生成 / 改写字节码增强类。

适用场景 · AOP / 动态代理底层。

关联:与 动态代理 同源。

F19RAIIresource-acquisition-is-initialization

核心意图:资源获取即初始化,析构时释放。

适用场景 · C++ / JVM 用 try-with-resources。

关联:与 锁对象 / 执行环绕 同源。

F20双分派double-dispatch

核心意图:依两个对象类型选行为(visit)。

collide(self)→other.collideWith(this) «abstract» GameObject Spaceship Asteroid
A.collide(B) 调用 B.collideWith(A),依两次动态类型选定正确处理,避开冗长 if 链。

适用场景 · 操作随两者类型变。

关联:与 访问者 同源。

F21更新方法update-method

核心意图:游戏循环里统一 tick 更新对象。

适用场景 · 游戏 / 仿真。

关联:与 游戏循环 同源。

F22游戏循环game-loop

核心意图:固定循环推进『输入-更新-渲染』。

适用场景 · 实时仿真。

关联:与 更新方法 协作。

08云原生 · 韧性 · 分布式 Cloud-native & Resilience

上云之后才被命名的一批模式:重试、限流、降级、分片、角色模型——它们回答的是『系统在故障与高负载下如何存活』。

C1重试retry

核心意图:瞬时失败自动重试(带退避)。

适用场景 · 网络抖动。

关联:与 断路器 / 幂等 协作;回应 墨菲定律。

C2回退fallback

核心意图:主路径失败用降级结果。

适用场景 · 保可用。

关联:与 断路器 协作。

C3限流rate-limiting-pattern

核心意图:限制单位时间请求数。

适用场景 · 防过载。

关联:与 背压 / 过载丢弃 同源。

C4节流throttling

核心意图:平滑限制速率。

适用场景 · 保护下游。

关联:与 限流 同源。

C5健康检查health-check

核心意图:探活决定流量去留。

适用场景 · 编排 / 网关。

关联:与 断路器 / 自注册 协作。

C6队列削峰queue-based-load-leveling

核心意图:用队列吸收突发。

适用场景 · 保护处理端。

关联:与 生产者消费者 同源。

C7分片sharding

核心意图:数据按片分布提升扩展。

适用场景 · 海量数据。

关联:与 空间分区 同源。

C8空间分区spatial-partition

核心意图:按空间 / 地理切分负载。

适用场景 · 地理分布式。

关联:与 分片 同源。

C9缓存caching

核心意图:用副本加速读取。

适用场景 · 读多写少。

关联:与 数据局部性 / 标识映射 同源。

C10主从master-worker

核心意图:一个主分发、多个 worker 执行。

适用场景 · 并行作业。

关联:与 领导者跟随者 / 分治 同源。

C11扇出扇入fanout-fanin

核心意图:并行发散再汇合结果。

适用场景 · 聚合并行调用。

关联:与 分治 / 聚合器 同源。

C12双缓冲double-buffer

核心意图:前后台缓冲切换避免卡顿。

适用场景 · 图形 / 流式。

关联:与 生产者消费者 同源。

C13角色模型actor-model

核心意图:用消息驱动的不共享状态实体。

适用场景 · 高并发容错(Akka)。

关联:与 活动对象 / 反应器 同源。

09测试 · UI · 杂项 Testing / UI / Misc

不属于上述主线的工程惯用法:测试组织、UI 状态管理、规则外置与跨版本集成——共 12 个,补全模式词典的最后一角。

M1AAA 三段式arrange-act-assert

核心意图:测试分『准备-执行-断言』三段。

适用场景 · 可读单测。

关联:与 对象母亲 协作(测试)。

M2页面对象page-object

核心意图:把页面元素 / 操作封装成对象。

适用场景 · UI 自动化测试。

关联:与 表示模型 / 视图助手 同源。

M3裸对象naked-objects

核心意图:直接把领域对象当 UI。

适用场景 · 快速 CRUD 应用。

关联:与 领域模型 极端化。

M4组件component

核心意图:自包含可复用 UI / 功能单元。

适用场景 · 前端 / UI 组合。

关联:与 组合 / 视图 同源。

M5子类沙箱subclass-sandbox

核心意图:用基类限制子类能力(安全)。

适用场景 · 插件 / 脚本沙箱。

关联:与 模板方法 / 委托 同源。

M6Blocbloc

核心意图:用事件→状态流管理 UI 状态。

适用场景 · 前端状态管理。

关联:与 MVI / 单向数据流 同源。

M7Fluxflux

核心意图:单向数据流(Action→Dispatcher→Store)。

适用场景 · 前端状态。

关联:与 Redux / MVI 同源。

M8规则引擎rule-engine

核心意图:把业务规则外置为可执行规则。

适用场景 · 多变业务策略。

关联:与 策略 / 规格 同源。

M9特性开关feature-toggle

核心意图:用开关控制功能发布。

适用场景 · 渐进发布 / AB。

关联:与 策略 同源(运行时分支)。

M10收集参数collecting-parameter

核心意图:用对象累积多步结果返回。

适用场景 · 多步收集。

关联:与 参数对象 同源。

M11管线pipeline

核心意图:把处理步骤串成管道。

适用场景 · 数据处理流。

关联:与 集合管线 / 责任链 同源。

M12宽容读取tolerant-reader

核心意图:忽略未知字段稳健解析。

适用场景 · 跨版本集成。

关联:与 防腐层 / 适配器 同源。