Обзор шаблонов проектирования

#design-patterns

#шаблоны проектирования

Вопрос:

У меня есть два процесса, отличающиеся только реализацией их стилей обработки, например. Процесс1 — обрабатывает список элементов, которые необходимо обработать одним способом, а процесс 2 обрабатывает список элементов, которые необходимо обработать другим способом

Я хочу обработать список элементов, а затем передать их через процесс 1 и процесс 2 в зависимости от конкретного свойства элемента.

Затем я хочу получить комбинированный вывод о том, сколько элементов из списка было обработано в каждом стиле.

Я решил использовать шаблон «Цепочка соответствия». Мне интересно, является ли это хорошим выбором

 Dim proc1 As New Process1
Dim proc2 as New Process2

proc1.nextProcessing(proc2)
For each itm in itmlst
  proc1.ProcessItem(itm)
Next

proc1.DoSomething()
proc2.DoSomething()

--result is an object that resturns the list of items processed by that process.
Dim result1= proc1.EndPRocess()
Dim result2= proc2.EndProcess()
  

Комментарии:

1. Где находится часть «цепочки соответствия»? Я слепой?

2. Кажется, все в порядке, но больше кода может изменить мое мнение

Ответ №1:

Я бы использовал write my own Composite для списка и дал ему следующие методы:

 class Composite {
   Composite filter(Filter f);

   void apply(Function f);
}
  

Вы можете отделить фильтрацию и применить функции, что дает вам больше возможностей расширения, а composite обрабатывает итерации за вас. Сам составной класс может обрабатывать отчет о результате применения различных фильтров.

Комментарии:

1. почему Composite.filter возвращает составную часть отфильтрованных элементов? Почему бы просто не вернуть список?

2. Composite — это оболочка для списка.