我们有一个多租户应用程序,无论好坏,它可以处理不同客户之间的区别,其中包含大量if-then-else语句。我有一个特别简单的验证需要在数据输入上执行,类似于以下场景:
我们假设我们有一个名为Thermometer
的对象,其中包含一个名为temperature
的属性。当用户输入数字时,我们需要将其四舍五入到最接近的第3个小数。所以,如果他们进入" 65.65432",我们需要存储" 65.654"。但是等等,还有更多。客户鲍勃喜欢细节,并不希望数字四舍五入。客户莎拉是请求四舍五入的人。
如何做到这一点很简单,但 这样做是我的问题。我想直接在值对象Thermometer
上执行此操作,因为它快速而简单,并且似乎正确。但是,由于只有一个客户端请求它,因此这属于"业务逻辑/验证的范围。"将它放在值对象上是否仍然可以接受,或者我应该将其填充并在表示层中构建它?这样做需要将访问器包装在处理UI的托管bean中的代理方法中。哪个选项有更好的回报?
更多细节
对于任何感兴趣的人,这是一个使用JSF的J2EE应用程序。我们通常能够使用<f:numberConverter>
,但在这种情况下,我们也使用<a4j:support event="onkeyup" ajaxSingle="true" />
,它似乎打破了numberConverter。所以我们必须手动进行舍入。
答案 0 :(得分:1)
当然,您希望根据客户端对可以插入的不同类中的不同需求进行建模。像战略一样的东西。这样你就可以独立地对每个单元进行单元测试,并使耦合保持良好和低。