最佳编程实践

时间:2014-11-01 08:44:49

标签: java

我有一些验证器类,如ABCValidator,PQRValidator,XYZValidator等。所有这些类只包含单个静态布尔方法,它接受单个参数并验证它。
例如ABCValidator类:

class ABCValidator {
    public static boolean isValid(abc){
        //abc validation logic
        //return true/false
    }

}

上面的代码中是否存在任何反模式?
如果我们将所有方法集中到一个辅助类中,我们是否有任何副作用?
还有其他方法可以做得更好吗?

2 个答案:

答案 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。