1

我有一个实体,Exchange。Exchange 需要在启动时填充 VO 列表 CurrencyPair。CurrencyPair 的集合作为主数据存储在数据库中,并有一个名为 ICurrencyPairRepository 的存储库来获取所有可用的货币对。因此,一旦应用启动,我希望在 Exchange 实体中获取 CurrencyPair 集合。

我的问题是,我可以直接将 ICurrencyPairRepsoitory 的实现注入到 Exchange 中吗?还是应该有一个从存储库中获取 CurrencyPairs 的基础设施服务实现?(当然,ICurrencyPairRepository 接口在域层内部,它的实现在基础设施层)

还是应该在 Exchange 中注入应用程序服务?我们是否允许仅将域服务注入实体或其他服务/存储库也可以注入?

用例:

在启动时,交易所需要获取应用程序中允许交易的所有货币对。每当有新订单进入交易所时,它都会包含它想要交易的货币对。交易所随后需要检查该货币对是否允许交易。如果是,则转发该订单,否则,丢弃该请求。

由于 Exchange 是一个聚合根,我可以从应用程序启动的位置对其进行初始化,并为其提供一组货币对,但我很想知道允许在本例中也是聚合根的实体中注入什么.

4

1 回答 1

0

对于某些人来说,将存储库依赖项直接注入实体是可以接受的,我个人非常不喜欢这种解决方案。当您还处理基础架构(违反 SRP)时,很难将注意力集中在行为上。

我通常尝试做的是检索实体所需的全部信息的应用程序服务......然后我对测试和编写行为非常满意。

于 2014-10-17T23:47:23.107 回答