首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >最佳编程实践

最佳编程实践
EN

Stack Overflow用户
提问于 2014-11-01 16:44:49
回答 2查看 105关注 0票数 0

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

以ABCValidator类为例:

代码语言:javascript
复制
class ABCValidator {
    public static boolean isValid(abc){
        //abc validation logic
        //return true/false
    }

}

上面的代码中是否存在反模式?

如果我们将所有的方法集中到一个助手类中,而不是上面的方法,我们会有任何副作用吗?

有没有其他更好的方法呢?

EN

回答 2

Stack Overflow用户

发布于 2014-11-01 16:51:34

我会创建一个接口:

代码语言:javascript
复制
public interface Validator<T> {
  public boolean validate(T object);
}

然后创建实现此接口的类。这将允许使用多态性特征,也将更容易创建测试,特别是当validate方法所做的事情不仅仅是计算时,比如访问数据库或web服务。

票数 2
EN

Stack Overflow用户

发布于 2014-11-01 17:06:49

我会看看其他人是如何解决类似问题的;例如,http://docs.spring.io/spring/docs/current/spring-framework-reference/html/validation.html

我更喜欢Sanjay在问题评论中建议的泛型,以及Avi在他的回答中建议的接口。事实上,请阅读Effective一书中关于如何使用函数对象来表示策略的内容。如果你对java8感兴趣,也许还有lambdas。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26687570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档