Шаблон проектирования при переборе списка классов, реализующих интерфейс

#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 трасс больше.