代码味道与否?验证器和模型共享相同类型的层次结构

时间:2009-04-22 18:00:23

标签: oop

我们使用spring验证来验证我们的模型,然后将它们填充到数据库中。 所以例如

  

订单 - > OrderItem的

在将订单保存到数据库之前,它由OrderValidator验证

OrderValidator验证OrderItemValidator的订单委托,以便使用Order验证OrderItem。因此,在这种情况下,层次结构或验证器看起来像

  

OderValidator - > OrderItemValidator

知道订单有orderItems存在于验证器和模型中。

我想知道这是否是隐式重复的标志(类似于Parallel inheritance hierarchy代码味道)。 如果是的话,我有什么方法可以避免它?

2 个答案:

答案 0 :(得分:1)

我会考虑将验证过程划分为类不可知函数,以及真实类可以与验证函数一起使用的每个类的参数,以基本上检查自身。这种方法的可行性需要更多的问题空间知识。

答案 1 :(得分:0)

根据我的经验,验证器最好使用某种装饰器来实现。它们不应该继承自任何,因为验证者之间没有理性的is-a关系。

验证器仅查看模型附带的数据,而不是模型的行为,因此我认为任何层次结构都不合适。