2014-11-01 95 views
0

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

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

}

是否有任何反图案存在于上述代码?
而不是上述方法,如果我们集中所有的方法到一个辅助类中,我们是否有任何副作用?
还有其他方法可以更好地完成吗?

+1

如果你想创建一个“验证器”迷你框架,我个人不会使用静态方法。这将允许您的验证器对象进行操作并使用验证器状态。另外,你可以利用泛型来创建一个通用的接口,并由所有的子类实现。与往常一样,从现有框架中汲取灵感是一个好主意:http://docs.spring.io/spring/docs/current/spring-framework-reference/html/validation.html – 2014-11-01 08:54:57

+1

如何选择正确的验证器?这可能是反模式。 – 2014-11-01 09:08:50

回答

2

我会创造一个接口:

public interface Validator<T> { 
    public boolean validate(T object); 
} 

然后创建一个实现此接口的类。这将允许使用多态性特征,并且将更容易创建测试,特别是如果方法执行比计算更像数据库或Web服务。

+3

您也可以将其设为通用接口,以便使用不同的类型。或者让validate方法将Object作为类型。 – 2014-11-01 09:06:43

+0

@RolfSmit - 这是正确的。我会更新答案。谢谢! – Avi 2014-11-01 09:14:03