代码之家  ›  专栏  ›  技术社区  ›  Surya

是否有密码气味?验证器和模型共享相同的层次结构

oop
  •  0
  • Surya  · 技术社区  · 17 年前

    在将模型放入数据库之前,我们使用spring验证来验证模型。 例如

    订单-->订单项目

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

    OrderValidator验证order委托给OrderItemValidator,以使用订单验证OrderItem。所以在本例中,层次结构或验证器看起来像

    OderValidator-->OrderItemValidator

    确认器和模型中都存在order具有orderItems的知识。

    我想知道这是否是隐性重复的迹象(类似于 Parallel inheritance hierarchy 代码气味)。 如果是,我有什么办法可以避免呢?

    2 回复  |  直到 17 年前
        1
  •  1
  •   staticsan    17 年前

    我将把验证过程划分为一个与类无关的函数,以及每个类的参数,真正的类可以与验证函数一起使用这些参数来进行基本的检查。这种方法的可行性需要比所提供的更多的问题空间知识。

        2
  •  0
  •   Jon Limjap    17 年前

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

    验证器只是查看模型附带的数据,而不是模型的行为,所以我认为任何继承权都不合适。