首页/开发/系统分析与架构设计速查/六边形架构(端口与适配器)
架构风格与模式58 条

六边形架构(端口与适配器)

领域核心通过端口定义所需与所提供的能力,适配器实现具体技术(HTTP、数据库、消息);应用核心不依赖框架与基础设施,便于替换与测试。

入站适配器把外部请求(HTTP、CLI、消息)转换为对核心的调用
出站适配器核心通过接口调用外部(数据库、第三方 API)的实现
关键规则依赖方向由外向内,核心不 import 框架代码

端口定义示例(伪代码)

端口定义示例(伪代码)
// 出站端口:核心需要的存储能力
interface OrderRepository { save(order); findById(id) }

// 入站端口:外部可调用的用例
interface SubmitOrderUseCase { submit(cmd): Result }

// 适配器:JPA 与 HTTP 控制器分别实现上述接口
判断是否落地:能否在不启动 Web 框架的情况下对核心逻辑做单元测试。

易错点

  • 核心层直接使用 ORM 实体与注解,替换框架时改动波及业务
  • 端口定义按数据库表设计,抽象失去业务含义

数据来源与参考

  • Alistair Cockburn《Hexagonal Architecture》(2005)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌