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