是否可以接受价值对象中的业务验证?

时间:2014-09-03 18:55:31

标签: design-patterns enterprise paradigms

我们有一个多租户应用程序,无论好坏,它可以处理不同客户之间的区别,其中包含大量if-then-else语句。我有一个特别简单的验证需要在数据输入上执行,类似于以下场景:

我们假设我们有一个名为Thermometer的对象,其中包含一个名为temperature的属性。当用户输入数字时,我们需要将其四舍五入到最接近的第3个小数。所以,如果他们进入" 65.65432",我们需要存储" 65.654"。但是等等,还有更多。客户鲍勃喜欢细节,并不希望数字四舍五入。客户莎拉是请求四舍五入的人。

如何做到这一点很简单,但 这样做是我的问题。我想直接在值对象Thermometer上执行此操作,因为它快速而简单,并且似乎正确。但是,由于只有一个客户端请求它,因此这属于"业务逻辑/验证的范围。"将它放在值对象上是否仍然可以接受,或者我应该将其填充并在表示层中构建它?这样做需要将访问器包装在处理UI的托管bean中的代理方法中。哪个选项有更好的回报?

更多细节
对于任何感兴趣的人,这是一个使用JSF的J2EE应用程序。我们通常能够使用<f:numberConverter>,但在这种情况下,我们也使用<a4j:support event="onkeyup" ajaxSingle="true" />,它似乎打破了numberConverter。所以我们必须手动进行舍入。

1 个答案:

答案 0 :(得分:1)

当然,您希望根据客户端对可以插入的不同类中的不同需求进行建模。像战略一样的东西。这样你就可以独立地对每个单元进行单元测试,并使耦合保持良好和低。