我有一个Value对象-Money和ExchangeRatio。我想使用ExchangeRatio将一种货币转换为另一种货币。那么,在Value Object ExchangeRatio上构建一个转换行为(如:)好吗
ExchangeRatio.Convert(Money)返回Money。
或者我应该将其委托给某个域服务吗?换句话说,我可以在Value Object上构建一个行为,它不会改变它的状态,但有一些逻辑、数学或其他不同的对象创建(基于它的状态)吗?
你所做的对我来说听起来非常合理。Eric Evans在他的书中使用了一个Paint
对象的例子,它也做了同样的事情。mixIn
方法将另一个Paint
对象作为输入,并返回一个新的Paint
对象。
通过Paint
示例,他在书中演示了无副作用函数。