实体与用例澄清

edd*_*ddy 11 use-case clean-architecture

据我了解, use cases或interactors用于entities执行某些操作,而,entities持有我们的business rules.

根据这个定义:

用例与实体交互并依赖于实体

用例以什么方式依赖于实体,关系是什么?

例如,假设我们有一个具有三个功能的银行应用程序:login、view balance和transfer funds。

因此,为了能够转移资金,用户必须登录并且应该有足够的余额。

我猜我们这里的用例是,transfer funds上面的语句是business rule,如果是这样的话,如何实现它?

类比很多,但正确的实现却很少。

ror*_*ror 11

我想分享一下我的理解。

  1. 除了可能的其他实体之外,实体不依赖于任何东西。它保存可重复用于各种应用程序的数据(状态)和逻辑。我也将实体视为普通 POJO(但它与数据访问层返回的内容不同)
  2. 用例与实体交互(因此依赖于它们)并保存特定应用程序的逻辑(通常通过各种存储库或数据访问层网关执行该逻辑)

对于您指定的示例:

  1. 实体:
    • 用户(保存用户名、散列和加盐密码;验证用户名、散列纯文本密码等逻辑)
    • 余额(保存用户依赖性、金额、限制、验证给定转账金额是否正常等逻辑)
  2. 用例:
    • 身份验证(基于用户名/密码输入,验证它并(使用某种存储库或数据网关)从后端提取用户实体,以及可能的一些令牌),如果成功则可能缓存它或报告错误(如果有)
    • 查看余额(根据用户实体输入,从后端拉取余额实体(同上...),如果有错误则报告
    • 转账(根据用户实体和输入金额,提取余额实体,验证是否允许转账,如果允许则执行,否则报错)

  • 我仍然很困惑,因为我还没有看到任何正确的实现。您提到用户实体保存用户名、哈希值等,但是我们从哪里传递所有这些凭据? (2认同)