0

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

还有一些常用的方法,如isInteger,isInRange等。我应该将这些方法放在 a 中ValidationHelper并在实现接口的类中使用组合Validator,还是应该创建Validator一个抽象类,将这些方法放在那里并使用继承而不是组合?

4

3 回答 3

3

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

于 2012-12-27T10:26:19.587 回答
2

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

于 2012-12-27T10:39:59.277 回答
0

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

此外,是否不可能isInteger在接口中实现泛型(等)方法Validator并标记final?它们甚至可以static按照这个问题的思路制作。

于 2012-12-27T10:40:11.287 回答