Код: Выделить всё
public class ThingCreator {
// ...
public void create(SomeRequestToCreateThing request) {
final var condition1 = isCondition1Satisfied(request);
final var condition2 = isCondition2Satisfied(request);
// condition3, condition4 etc etc
if (condition1 && condition2) { // && condition3 && condition4 etc etc
doCreate(request);
}
}
}
Моя первая мысль заключается в том, что если я абстрагирую условия и внедряю их в Творца, то, когда я проверяю Творца, мне технически не нужно проверять каждую комбинацию; Мне нужно только проверить, что Создатель вызывает isSatisfied по некоторым заданным критериям:
Код: Выделить всё
public interface Criterion {
boolean isSatisfied(SomeRequestToCreateThing request);
}
public class ThingCreator {
// ...
private final List criteria;
public void create(SomeRequestToCreateThing request) {
final var allSatisfied = this.criteria.stream()
.allMatch(criterion -> criterion.isSatisfied(request));
if (allSatisfied) {
doCreate(request);
}
}
}
p>
Похоже, это очень распространенная проблема, поэтому мне интересно, есть ли какой-то шаблон проектирования, который мне следует применить, или, может быть, мне просто нужно скорректировать свою философию тестирования.
Подробнее здесь: https://stackoverflow.com/questions/787 ... -are-satis