Это цитата, которую я, возможно, неправильно истолковал в этом разделе книги «Шаблоны проектирования, элементы многоразового объектно-ориентированного программирования».
Контекст может передавать себя в качестве аргумента объекту State, обрабатывающему запрос. Это позволяет объекту State обращаться к контексту при необходимости.
Если ConcreteState передается контекст из Request(this);
, разрешено ли этому государству вносить изменения в сам контекст?
В примере, над которым я работаю, контекст является Windows Form
с такими состояниями, как FormStart
и FormStop
. Я хотел бы внести изменения, чтобы при изменении состояния некоторые кнопки в форме были отключены / недоступны. Насколько я знаю, конструктору ConcreteState можно было передать контекст в качестве аргумента, а затем состояние могло бы внести изменения в контекст.
Определения, с которыми я работаю:
- Контекст: определяет интерфейс, представляющий интерес для клиентов
- Состояние: определяет интерфейс для инкапсуляции поведения, связанного с конкретным состоянием контекста.
- ConcreteState: каждый подкласс реализует поведение, связанное с состоянием контекста