Когда у вас есть цепочка ответственности, это обычно включает в себя один контекст, поэтому хорошим подходом является передача объекта Context
.
Одна интересная вещь, которую я хотел бы отметить, касается изменчивости контекста.
Вы можете иметь изменяемый контекст, а затем создать экземпляр объекта контекста, передав его в ProcessorA
. ProcessorA
может изменить его и установить собственные данные, а затем передать его на ProcessorB
. Затем ProcessorB
изменяет его еще немного, и, наконец, вызывающая сторона может прочитать контекст.
Если вы хотите повысить безопасность данных и инкапсулировать поведение каждого Processor
в качестве черного ящика ввода-вывода, вы можете выбрать неизменный контекстный объект. ProcessorA
может получить пустой объект контекста, затем создать его для ProcessorB
и вернуть вывод ProcessorB
.