基本模式

概述

基本模式(Fundamental Architectural Patterns)是软件系统设计中最底层、最细粒度、最普适的结构性设计单元。它们独立于特定技术框架,主要关注对象组织方式、系统间通信机制、跨模块抽象、一致性约束以及可扩展性边界等内在结构问题。

这些模式不是特定架构风格(如分层、微服务、DDD)的专属组件,而是可在任何架构体系内被组合、复用和扩展,用于增强系统的可维护性、可理解性、演进性与耦合管理能力。


本质 / 定义

基本模式的本质包括以下三点:

抽象一致性(Abstraction Consistency) 提供跨模块、公用、可复用的抽象结构,使系统概念与代码结构保持一致。

边界控制(Boundary Control) 通过模式化的边界封装实现低耦合、高内聚,有效隔离变化源。

替换性与稳定性(Replaceability & Stability) 通过接口化、不可变对象等手段,使组件可独立演进,从而提高系统长期稳定性。


核心概念(Core Concepts)

下表概述了本知识体系涉及的所有基本模式:

模式 核心目标 作用域 核心特性
网关(Gateway) 封装外部资源 系统边界 统一访问接口,屏蔽外部差异
映射器(Mapper) 连接两个独立对象/系统 子系统之间 双向或单向转换,通信隔离
层超类型(Layer Supertype) 定义跨层通用行为 层级内部 公共超类,减少重复代码
分离接口(Separated Interface) 解耦接口与实现的依赖位置 服务边界 不跨层依赖实现,利于模块化
注册表(Registry) 全局查找服务对象 系统对象管理 命名查询,替代直接引用
值对象(Value Object) 表示无身份的一致性值 业务模型 不可变、值相等决定对象相等
货币(Money) 表示金额、币种、精度 领域概念 值对象特例,内含精度保护
特殊情况(Null Object) 去除显式条件分支 API与流程 返回安全默认对象
插件(Plugin) 运行时可切换实现模块 扩展机制 条件绑定/工厂动态加载
服务桩(Service Stub) 替代外部服务进行测试 测试环境 与插件机制一致,提供测试实现
记录集(Record Set) 结构化表格数据的内存表示 数据访问 游标式或离线式数据模型

分类体系(Taxonomy)

可将上述模式根据其结构目标归入以下三大类:

graph TD
  A[基本模式分类] --> B[边界与访问控制]
  A --> C[对象与结构抽象]
  A --> D[扩展与替换机制]

  B --> G[网关]
  B --> H[映射器]
  B --> I[服务桩]
  
  C --> J[层超类型]
  C --> K[分离接口]
  C --> L[值对象]
  C --> M[货币]
  C --> N[特殊情况]

  D --> O[插件]
  D --> P[注册表]
  D --> Q[记录集]

应用场景(Use Cases / Applications)

网关(Gateway)

映射器(Mapper)

层超类型(Layer Supertype)

分离接口(Separated Interface)

注册表(Registry)

值对象(Value Object)

货币(Money)

特殊情况(Null Object)

插件(Plugin)

服务桩(Service Stub)

记录集(Record Set)


关联关系(Relations / Dependencies)

模式关系 说明
插件 ↔ 注册表 插件机制可依赖注册表查找实现
网关 ↔ 映射器 网关通常包含映射器以适配外部数据结构
值对象 ↔ 特殊情况 可为值对象提供 Null Value 以消除判空
分离接口 ↔ 插件 插件机制要求接口分离以支持多实现
服务桩 ↔ 插件 测试实现通常作为插件的一种选型形式

下面给出概念关系模型:

graph LR
  A[接口] --需要--> B[分离接口]
  B --多实现--> C[插件/替换实现]
  C --测试实现--> D[服务桩]

  E[外部系统] --> F[网关]
  F --> G[映射器]

  H[领域模型] --> I[值对象]
  I --> J[货币]
  I --> K[特殊情况]

  L[系统对象管理] --> M[注册表]

发展趋势(Evolution / Trends)

解构化与组合化趋势 现代框架(Spring, NestJS, Micronaut)将注册表、分离接口、插件化系统作为基础能力,弱化其显式存在。

微服务与云原生推动接口契约独立化 分离接口成为标准(OpenAPI、protobuf),促进跨团队协作与模块独立部署。

不可变对象与值导向模型(Value-oriented Modeling)崛起 函数式编程、事件溯源推动值对象模式扩展。

动态扩展机制增强 插件机制成为服务网格、A/B 测试、策略路由的重要基础模型。

映射器工具化 Mapper 工具(MapStruct、AutoMapper)成为主流,提高模型转换一致性。


总结(Conclusion)

基本模式构成软件架构的“微结构”,是所有架构风格的共同基石。 它们解决的问题不在于宏观的系统划分,而在于微观的对象关系、跨模块边界与可替换性。掌握这些模式可以获得以下收益:

关联内容(自动生成)