构成与继承

时间:2012-12-27 10:22:01

标签: java design-patterns

我有一个带有一个方法签名的Validator接口:public List<ParameterError> validateParameters(Parameters parameters);各种类实现了这个接口。

还有一些常见的方法,如isIntegerisInRange等。我应该在ValidationHelper中使用这些方法,并在实现Validator接口的类中使用组合或者我应该将Validator作为一个抽象类,将这些方法放在那里并使用继承而不是组合?

3 个答案:

答案 0 :(得分:3)

我假设isIntegerisInRange等,如果一般实现,甚至可以在Validator类之外使用。在这种情况下,它们应该进入一个单独的util类,该类应该只被称为Utils而不是ValidationHelper。应始终在可以使用它们的最广泛的上下文中命名类/方法。

答案 1 :(得分:2)

你的辅助方法是static方法的良好候选者,因为它们是纯函数,并且它们不是多态的。您应该使用实用程序类并将所有此类函数放入其中。这导致最小耦合:既不是组成,也不是继承;只是纯粹依赖于方法本身。

答案 2 :(得分:0)

我更喜欢组合而不是继承,因为实现Validator的类可能不一定共享is-a关系。他们更有可能对Validator界面提供的方法感兴趣。

此外,是否无法在接口isInteger中实现通用(Validator等)方法并将其标记为final?他们甚至可以按this问题的方式制作static