我有一些验证器类,如ABCValidator,PQRValidator,XYZValidator等。所有这些类只包含单个静态布尔方法,它接受单个参数并验证它。
例如ABCValidator类:
class ABCValidator {
public static boolean isValid(abc){
//abc validation logic
//return true/false
}
}
上面的代码中是否存在任何反模式?
如果我们将所有方法集中到一个辅助类中,我们是否有任何副作用?
还有其他方法可以做得更好吗?
答案 0 :(得分:2)
我会创建一个界面:
public interface Validator<T> {
public boolean validate(T object);
}
然后创建实现此接口的类。这将允许使用多态特征,并且更容易创建测试,特别是如果validate
方法执行的操作不仅仅是计算,例如外出到数据库或Web服务。
答案 1 :(得分:1)
我会看看别人如何解决类似的问题;例如, http://docs.spring.io/spring/docs/current/spring-framework-reference/html/validation.html
我更喜欢Sanjay在问题评论中建议的泛型,并且在他的回答中使用Avi建议的界面。实际上,请阅读有关如何使用函数对象来表示Effective Java一书中的策略的内容。如果你是java 8,也许关于lambdas。