我有一个必须具有String ID属性的Student类,必须对其进行验证。我不确定是否要在学生班或我正在实施学生班的班级中验证它。这有意义吗?
答案 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) {
// ...
}
}
这种方法导致对象代码的分离和验证它的方式,在组合验证器时提供更大的灵活性: