Какой класс должен обновлять пользовательский интерфейс, когда события из пользовательского интерфейса делегируются контроллеру GRAPS?

#c #oop #user-interface #controller #grasp

Вопрос:

Я разрабатываю графическое приложение на C . Я знаю о контроллере GRASP, что он должен делегировать пользовательский интерфейс и системные события внутреннему приложению, при необходимости выполняя некоторые синхронизации. Но у меня есть несколько вопросов по поводу этой модели.

  1. Должен ли пользовательский интерфейс обращаться к контроллеру через интерфейс? Я видел, что в PHP они этого не делают, но это может дать мне некоторые преимущества, или это будет просто бессмысленное усложнение кода? Как это принято в сообществе программистов?
  2. Как должен называться контроллер? В моем графическом интерфейсе у меня есть форма, которая выполняет множество разных действий: загрузку файлов, подключение к серверу, изменение настроек. Итак, как было бы лучше назвать этот контроллер? Назвать его так MainFormController , чтобы он содержал имя элемента пользовательского интерфейса(в данном случае это так MainForm )? Или как это назвать ApplicationController ? Потому что в нем может быть много разных событий, которые нельзя назвать более конкретно.
  3. Какой класс должен обновлять пользовательский интерфейс? Должен ли контроллер это делать? В этом случае контроллер будет обрабатывать события из пользовательского интерфейса и обновлять пользовательский интерфейс синхронно или асинхронно. Это хорошая практика?
  4. Должен ли класс, который должен будет обновлять пользовательский интерфейс, обращаться к пользовательскому интерфейсу через интерфейс? Или он может напрямую получить доступ к элементу пользовательского интерфейса(в моем случае это так MainForm )? ( can означает, что это правильно в соответствии с шаблонами).

Я бы очень хотел проанализировать проект, в коде которого есть хорошо продуманный пользовательский интерфейс. Если вы знаете это, я был бы благодарен.

Надеюсь на вашу помощь!

P. S: Я знаю, что вопрос может быть основан на мнении, но я хочу знать, что думают об этом профессиональные программисты. Или, может быть, для этого вопроса есть форум StackExchange?