在哪里验证String参数

时间:2012-10-28 17:40:22

标签: java string validation class

我有一个必须具有String ID属性的Student类,必须对其进行验证。我不确定是否要在学生班或我正在实施学生班的班级中验证它。这有意义吗?

3 个答案:

答案 0 :(得分:5)

假设ID是final和immutable,那么一种方法是让Student构造函数抛出异常,可能是new IllegalArgumentException("Invalid student ID");

您还可以在Student类中提供静态方法,该方法验证字符串是否有效,以防您需要在不创建Student对象的情况下进行检查。

但我认为确定ID是否有效的逻辑应该在学生班中。

如果有(或可能在将来)不同类型的学生ID,你也可以考虑抽象的工厂模式,但听起来有点过分。

答案 1 :(得分:1)

如果学生已经在内部使用任何业务,则在其他地方使用第二个

Class Student
{
 public boolean  validate ()
  {
   //some logic to validation
  }
}

模型或控制器内部或操作

 public boolean  validate ()
  {
   //some logic to validation
  }

答案 2 :(得分:1)

其中一种方法是使用验证对象。例如,请参阅Spring Framework中的Validation方法。您可以使用两种方法创建一个实现接口Validator的对象:一个用于检测Validator是否可以验证要验证的实例,另一个用于验证实例。

public class StudentValidator implements Validator<Student> {

  public boolean supports(Student student) {
   // ...
  }

  public void validate(Object target, Errors errors) {
   // ...
  }
}

这种方法导致对象代码的分离和验证它的方式,在组合验证器时提供更大的灵活性:

  • 即使不遵守类层次结构,您也可以组合多个Validator(POJO原则)。
  • 当您需要使用来自其他系统(例如数据库)的数据验证字段时,此方法可避免在POJO域类中混合使用数据库/持久性代码。

请参阅the documentation of Spring about Validation