场景:我们收到一些关于对象的输入参数,例如课程
课程有导师姓名、学生人数、课程时间、房间号等。
我们需要验证(学生人数 > 0、上午 9 点 < 时间 < 晚上 9 点等)输入并创建对象。我们需要返回无效输入的错误源。
我可以想到两种方法
1) 使用静态方法创建一个单独的 Validator 类,
- 验证输入,(验证方法返回 true,或一些枚举,如 VALID、INVALID_TIME、INVALID_STUDENT_NUMBER)。
- 如果输入有效,则实例化 Bean。
缺点:
- 如果我们必须在验证输入值之前处理它们,如果输入有效,上述模式会导致执行两次,一次在 Validator 类中,一次在 bean setter 之前。我们无法返回 Bean 对象,因为 validate 方法需要在无效的情况下返回错误源。
2) Bean 类本身有 validate 方法,输入无效返回异常。通过不同类型的异常追踪错误的来源。
缺点:
- 需要创建多个自定义异常。
- 在持有人对象本身中包含验证方法是否正确?
我探索了几种设计模式,但它们并不相关。
请帮助我了解上述方法的优缺点,以及更好的方法。