要绘制一个场景,请考虑以下逻辑省略服务
public class Service {
private Validator validator;
public void submit(Foo foo) {
if (!validator.isValid(foo)) {
log.warn("invalid foo");
} ...
}
}
public interface Validator {
boolean isValid(Foo foo);
}
问题是只有它Validor
自己知道验证失败的原因。我只看到了两种可行的方法来调整这个原因。无论是Validator
- 记录失败条件本身
- 返回一个包含字符串原因和布尔值isValid的复杂对象。
前者很好,但会让人Service
不知道是否实际执行了日志记录,而后者引入了烦人的冗余和更复杂的用法。
哪个更喜欢,或者,有更好的方法吗?