简短版本: 对于需要访问数据库中的货币兑换率的值对象,您认为什么是最佳选择?前任:
Invoice.Amount = Invoice.Amount.toCurrency('CAD')
长版:
我有一个名为的值对象InvoiceAmount
,它有一个方法,toCurrency
将发票金额转换为指定的货币。我想重用这个货币转换逻辑,因为我知道我将在其他有界上下文(例如,等)中需要SalesOrderAmount
它FreightCost
。我的第一个想法是在 SharedKernel 中创建一个对象,Money
然后拥有并继承自. 将在课堂上实现,所以它只在一个地方。这对我来说听起来不错,但也许有更好的方法。现在我遇到的问题是,在我的系统中,货币兑换率存储在数据库中,因此我需要一个存储库来访问兑换率以便实施SalesOrderAmount
FreightCost
InvoiceAmount
Money
toCurrency
Money
Money
toCurrency
. 我很确定 DDD 说不要在实体或值对象中调用存储库,所以我正在努力弄清楚如何实现这一点。我正在考虑使用域服务来实际进行货币转换,并且Money
只会调用域服务,但是,我不确定 DDD 是否也认为这是一个不错的选择。也许我需要将域服务注入到每个聚合根 (和) 中SalesOrder
,这样我就可以将它注入到每个 Money 值对象中,这样它就可以依次进行货币转换。你怎么看?先感谢您。Invoice
Shipment