Hexagonal架构的核心思想
Hexagonal架构的核心思想是把应用程序分为三部分:
- 核心业务逻辑(Domain)
- 端口(Ports)
- 适配器(Adapters)
1. 核心业务逻辑(Domain)
- 职责:包含应用程序的核心业务逻辑和规则,也是应用程序的核心部分。
- 解释:你可以把核心业务逻辑想象成一个工厂的生产车间,这里负责制造产品(业务逻辑),不关心外界如何使用这些产品。
2. 端口(Ports)
- 职责:定义核心业务逻辑与外部世界交互的接口(API)。
- 解释:端口就像工厂的进出口通道,定义了外界如何把原材料送进来,以及如何把产品运出去。
3. 适配器(Adapters)
- 职责:实现端口定义的接口,把外部世界的请求转换为核心业务逻辑能够理解的形式,反之亦然。
- 解释:适配器就像工厂的运输工具和仓库,它们负责把原材料运进来和把产品运出去。
Hexagonal架构如何工作?
假设你有一个网上书店的系统,系统中有一个订单处理的业务逻辑。我们可以用Hexagonal架构来设计这个系统。
-
核心业务逻辑(Domain):
- 包含订单处理的业务逻辑,比如创建订单、计算总价、验证库存等。
-
端口(Ports):
- 定义订单处理的接口,比如
createOrder
、calculateTotalPrice
等。
- 定义订单处理的接口,比如
-
适配器(Adapters):
- 实现用户接口适配器,用于处理来自网页或移动应用的请求。
- 实现数据库适配器,用于与数据库进行交互,保存和查询订单数据。
- 实现外部支付服务适配器,用于与第三方支付平台进行集成。
举个例子:
假设你要设计一个网上书店的订单处理系统,使用Hexagonal架构:
-
核心业务逻辑(Domain):
- 订单实体:包含订单的业务逻辑,比如计算总价、验证库存等。
-
端口(Ports):
- 订单服务接口(OrderService):定义订单处理的接口,比如
createOrder
、calculateTotalPrice
等。
- 订单服务接口(OrderService):定义订单处理的接口,比如
-
适配器(Adapters):
- 用户接口适配器(UserinterfaceAdapter):接收来自网页或移动应用的请求,调用订单服务接口。
- 数据库适配器(DatabaseAdapter):实现与数据库的交互,保存和查询订单数据。
- 外部支付服务适配器(PaymentServiceAdapter):实现与第三方支付平台的集成。
Hexagonal架构的优点
- 松耦合:核心业务逻辑与外部世界解耦,使得业务逻辑更加独立和稳定。
- 易于测试:由于核心业务逻辑独立于外部系统,可以更容易地进行单元测试。
- 灵活性:可以更容易地更换外部系统,比如更换数据库或支付服务,而不需要修改核心业务逻辑。
总结
Hexagonal架构通过将应用程序分为核心业务逻辑、端口和适配器三部分,能够实现业务逻辑与外部世界的解耦,提高应用程序的可测试性和灵活性。