В своем постоянном стремлении освоить различные шаблоны проектирования я столкнулся с шаблоном проектирования «State».
Сначала позвольте мне объяснить, где я пытаюсь использовать этот шаблон. У меня есть форма, к которой я хотел бы применить состояние. Моя программа имеет три состояния: конфигурация, обработка и обработка завершена. При изменении состояния формы различные компоненты формы становятся включенными / отключенными, видимыми / невидимыми и т. Д.
С моим пониманием шаблона состояния все эти изменения (создание видимых / невидимых компонентов, включение / отключение и т. Д.) Должны происходить в отдельном классе, который содержит экземпляр формы. Если различные классы State отделены от класса Form, классы State не могут получить доступ к компонентам формы. Я чувствую, что это оставляет меня с одним из двух вариантов:
- Предоставить общедоступные компоненты формы
- Сделать классы State внутренним классом формы
Мне кажется, что вариант (1) плохой, но мне кажется, что вариант (2) как-то нарушает дух модели состояния. Другая мысль, которая у меня возникла, заключалась в использовании option (2), но с использованием частичных реализаций классов, однако я все еще чувствую, что это нарушает дух паттерна State.
Являются ли мои чувства по поводу любого выбора несправедливыми, или есть другой вариант, о котором я даже не подумал?