#list #design-patterns #chain
#Список #шаблоны проектирования #цепочка
Вопрос:
Когда у меня есть список классов проверки, реализующих интерфейс, введенный в службу для проверки объекта запроса, какой это шаблон, если я перебираю этот список и вызываю метод validate для каждого из них? Все классы проверки что-то проверяют
- Это какой-то шаблон цепочки?
Спасибо
Комментарии:
1. en.wikipedia.org/wiki/Specification_pattern
2. Существует два вида проверки: 1. проверка допустимого состояния и 2. процесс создания чего-либо действительного. Какова ваша задача?
3. Я не имел в виду проверку шаблона, это был просто пример. Я имел в виду некоторые классы, которые реализуют интерфейс и не знают друг друга, и выполняют все из них какую-то бизнес-логику, это может быть проверка или выполнение чего угодно
Ответ №1:
Нет. Предполагая, что у вас есть классный совет
@Service
public class Council {
@Inject
private Councillor[] council;
public boolean getConsensus(Act purpose) {
for(Councillor member: council) {
if (member.vetoes(purpose)) {
return false;
}
}
return true;
}
}
Это не приковано, потому что элементы не несут ответственности за своего прикованного соседа. Здесь у вас есть трассировка стека, которая возвращается к тому же самому выполнению метода getConsensus после каждого вето-вызова в цикле.
Но цепной шаблон делегирует выполнение от члена совета к члену совета и позволяет трассировке стека расти, по одной строке трассировки для каждого члена совета. Если у вас 200 советников, ваш stacktrace будет на 200 трасс больше.