Язык C оставляет компилятору некоторую свободу в отношении расположения структурных элементов в памяти:
Язык C предоставляет некоторую уверенность программисту в компоновке элементов в структуре:
Проблемы, связанные с выравниванием элементов:
Как работает выравнивание:
ps. Более подробную информацию можно найти здесь: «Сэмюэл П. Харбисон, Гай Л. Стейле CA Reference, (5.6.2 - 5.6.7) "
Недавно я написал статью о создании и использовании ApplicationController в проекте C # Winforms, чтобы отделить рабочий процесс и докладчиков от формы напрямую. Это может помочь:
Разделение рабочего процесса и форм с помощью контроллера приложений
edit:
В настоящее время Archive.org получил более читаемую копию статьи .
Контроллер Приложения является чем-то вроде другого зверя, чем контроллер, используемый в MVC.
Страница Martin Fowler на Контроллере Приложения.
В случае приложения MVP WinForms, которое, кажется, то, о чем тема вопроса, я думаю. Можно поместить всю логику для, "какую форму делают я показываю теперь" в Предъявителя, но поскольку приложение растет, Вы собираетесь быть дублированием большого количества кода между Предъявителями.
Скажите, что у Вас есть 2 представления, что у обоих есть кнопка для "Редактирования этот Виджет", у них обоих должна была бы быть логика, чтобы получить WidgetEditorPresenter и показать связанное представление. Если у Вас есть ApplicationController, Вы перемещаете ту логику в ApplicationController, и теперь у Вас просто есть зависимость во всех Ваших предъявителях на ApplicationController, и можно назвать appController. EditWidget () и это откроется корректное представление.
Контроллер приложения является uber-контроллером, который управляет потоком приложения всюду по Вашей системе, когда Вы перемещаетесь от экрана до экрана.
Лично у меня нет опыта с MVP или winforms, но я работал с MVC. Я надеюсь, что это - то, что Вы спрашиваете, иначе игнорируете мой ответ полностью.
C в MVC ответственен за больше, чем просто выбор следующего представления, которое будет представлено клиенту. Это содержит больше всего, предпочтительно все, бизнес-логика приложения, включая производительность системных задач (таких как вход и осуществление полномочий на поток данных из модели и к нему).
Его основная задача состоит в том, чтобы, естественно, служить уровню представления выше его и разделить его от образцового слоя ниже при посредничестве между ними. Я предполагаю, что можно думать о нем как о мозге приложения.
Надеюсь, это поможет,
Yuval =8-)