【发布时间】:2016-05-07 10:15:56
【问题描述】:
我正在考虑在一个项目中实现 Robert Martin 的 Clean Architecture,我正在尝试找出如何处理重要的用例。
我发现很难将架构扩展到复杂/组合的用例,尤其是参与者是系统而不是用户的用例,例如在执行某种批处理的系统中。
为了说明的目的,让我们假设一个用例,如“系统更新所有账户余额”,用伪代码实现,如
class UpdateAllAccountBalancesInteraction {
function Execute() {
Get a list of all accounts
For each account
Get a list of all new transactions for account
For each transaction
Perform some specific calculation on the transaction
Update account balance
}
}
此外,“获取所有账户的列表”、“获取账户所有新交易的列表”、“对交易执行一些特定的计算”、“更新账户余额”都是它们自己的有效用例并且它们中的每一个都已经在自己的交互类中实现了。
出现了几个问题:
- 用例“系统更新所有帐户余额”是否有效 用例还是应该分解成更小的用例(尽管 从商业的角度来看,这似乎是有道理的,它是一个 合法的业务场景)?
- 是 UpdateAllAccountBalancesInteraction 合法的互动?
- 是否允许/应该协调其他交互?
- 是编排其他的代码 互动真的属于其他地方吗?
- 是否可以 UpdateAllAccountBalancesInteraction 作为交互,但有它 调用其他交互者共享的函数,而不是充当 其他交互者的协调者?
【问题讨论】:
标签: oop architecture software-design