域驱动设计 – 值对象可以有行为吗?

我有一个价值对象 – 金钱和交换比率.我想使用ExchangeRatio将一个Money转换为另一个.因此,在Value Object ExchangeRatio上构建转换行为是很好的,如下所示:

ExchangeRatio.Convert(Money)返回Money.

或者我应该将其委托给某些域名服务吗?换句话说,我可以在Value Object上构建一个行为,它不改变它的状态但是有一些逻辑,数学或其他不同的对象创建(基于它的状态)吗?

最佳答案 你在做什么对我来说听起来很合理. Eric Evans在他的书中使用了一个Paint对象的例子来做同样的事情. mixIn方法将另一个Paint对象作为输入并返回一个新的Paint对象.

使用Paint样本,他在书中展示了无副作用的功能.

点赞