此链接描述了 Money 对象上的一个函数,用于将不同货币的资金加在一起。
首先我不想使用服务定位器模式。我目前使用的模式是不让 Money 对象自己进行转换。如果您尝试将不同的货币添加在一起,它就会抛出。
我有拥有Money 对象的对象(即MultiCurrencyAccount)处理Money 的数学运算。我的问题是我目前正在将 IMoneyConverter 注入 MultiCurrencyAccount 域对象的构造函数。这对我来说感觉很脏,因为 IMoneyConverter 实际上是一种服务,它反过来使用 IForeignExchangeService (这个可以访问数据库)。我知道我不应该关心实现,因为我正在处理抽象,但感觉很奇怪。
我不确定我是否离开基地并将服务注入我的域对象是“正确的”,或者是否有更优雅的方式来做到这一点。