【发布时间】:2021-11-15 14:17:10
【问题描述】:
我正在构建一个基于简洁架构 (https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html) 的复杂系统,使用许多外部组件,例如支付终端。提到的支付终端有一个包含基本功能的库,包括一个传递回调的地方,以便终端可以通知交易的进度,例如。 (插入密码或取出支付卡)。
让我们考虑一个场景:
- 用户按下“执行事务”按钮,使用某种适配器系统通知用户想要执行事务。
- 使用其他类型适配器的系统调用外部 API 并告诉它“执行事务”。
- 现在我们想通过外部 API 回调通知用户进度。
为了使用回调 API,我们的一个或多个应用程序类必须实现回调方法,因此必须符合 API 提供者定义的一些抽象。所以我们的类必须依赖于 API。这意味着 API 不能被轻易地模拟或存根。我们必须将回调对象视为该 API 适配器的一部分,并通过模拟或存根它们来测试应用程序的其余部分。
一方面,我不希望架构依赖于外部 API,但创建专门用于处理 API 事件的新实体对我来说似乎是过度设计的。
【问题讨论】:
-
您能否就您想要/需要什么做一个具体明确的问题?您的系统图也可以提供帮助。谢谢。
标签: callback architecture external clean-architecture hexagonal-architecture