我有一些验证器类,如ABCValidator,PQRValidator,XYZValidator等,所有这些类都只包含一个静态布尔方法,该方法只接受单个参数并进行验证。
以ABCValidator类为例:
class ABCValidator {
public static boolean isValid(abc){
//abc validation logic
//return true/false
}}
上面的代码中是否存在反模式?
如果我们将所有的方法集中到一个助手类中,而不是上面的方法,我们会有任何副作用吗?
有没有其他更好的方法呢?
发布于 2014-11-01 16:51:34
我会创建一个接口:
public interface Validator<T> {
public boolean validate(T object);
}然后创建实现此接口的类。这将允许使用多态性特征,也将更容易创建测试,特别是当validate方法所做的事情不仅仅是计算时,比如访问数据库或web服务。
发布于 2014-11-01 17:06:49
我会看看其他人是如何解决类似问题的;例如,http://docs.spring.io/spring/docs/current/spring-framework-reference/html/validation.html
我更喜欢Sanjay在问题评论中建议的泛型,以及Avi在他的回答中建议的接口。事实上,请阅读Effective一书中关于如何使用函数对象来表示策略的内容。如果你对java8感兴趣,也许还有lambdas。
https://stackoverflow.com/questions/26687570
复制相似问题