基本模式

概述

基本模式(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)

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

关联内容(自动生成)