Что должен сделать Контроллер Приложения?

Язык C оставляет компилятору некоторую свободу в отношении расположения структурных элементов в памяти:

  • могут появляться отверстия памяти между любыми двумя компонентами и после последнего компонента. Это было связано с тем, что определенные типы объектов на целевом компьютере могут быть ограничены границами адресации
  • «отверстий в памяти», включенными в результат оператора sizeof. Размер sizeof не включает в себя размер гибкого массива, который доступен в C / C ++
  • . Некоторые реализации языка позволяют вам управлять компоновкой памяти структур через параметры прагмы и компилятора

Язык C предоставляет некоторую уверенность программисту в компоновке элементов в структуре:

  • компиляторы должны назначать последовательность компонентов, увеличивая адреса памяти
  • Адрес первого компонента совпадает с начальным адресом структуры
  • неназванные битовые поля могут быть включены в структуру в требуемые выравнивания адресов соседних элементов

Проблемы, связанные с выравниванием элементов:

  • Различные компьютеры строят ребра объектов по-разному
  • Различные ограничения ширины битового поля
  • Компьютеры отличаются тем, как хранить байты в слове (Intel 80x86 и Motorola 68000)

Как работает выравнивание:

  • T объем, занимаемый структурой, вычисляется как размер выровненного одиночного элемента массива таких структур. Структура должна заканчиваться так, чтобы первый элемент следующей ниже структуры не нарушал требования выравнивания

ps. Более подробную информацию можно найти здесь: «Сэмюэл П. Харбисон, Гай Л. Стейле CA Reference, (5.6.2 - 5.6.7) "

10
задан adriaanp 23 September 2008 в 13:14
поделиться

3 ответа

Недавно я написал статью о создании и использовании ApplicationController в проекте C # Winforms, чтобы отделить рабочий процесс и докладчиков от формы напрямую. Это может помочь:

Разделение рабочего процесса и форм с помощью контроллера приложений

edit:
В настоящее время Archive.org получил более читаемую копию статьи .

12
ответ дан 3 December 2019 в 16:55
поделиться

Контроллер Приложения является чем-то вроде другого зверя, чем контроллер, используемый в MVC.

Страница Martin Fowler на Контроллере Приложения.

В случае приложения MVP WinForms, которое, кажется, то, о чем тема вопроса, я думаю. Можно поместить всю логику для, "какую форму делают я показываю теперь" в Предъявителя, но поскольку приложение растет, Вы собираетесь быть дублированием большого количества кода между Предъявителями.

Скажите, что у Вас есть 2 представления, что у обоих есть кнопка для "Редактирования этот Виджет", у них обоих должна была бы быть логика, чтобы получить WidgetEditorPresenter и показать связанное представление. Если у Вас есть ApplicationController, Вы перемещаете ту логику в ApplicationController, и теперь у Вас просто есть зависимость во всех Ваших предъявителях на ApplicationController, и можно назвать appController. EditWidget () и это откроется корректное представление.

Контроллер приложения является uber-контроллером, который управляет потоком приложения всюду по Вашей системе, когда Вы перемещаетесь от экрана до экрана.

12
ответ дан 3 December 2019 в 16:55
поделиться

Лично у меня нет опыта с MVP или winforms, но я работал с MVC. Я надеюсь, что это - то, что Вы спрашиваете, иначе игнорируете мой ответ полностью.

C в MVC ответственен за больше, чем просто выбор следующего представления, которое будет представлено клиенту. Это содержит больше всего, предпочтительно все, бизнес-логика приложения, включая производительность системных задач (таких как вход и осуществление полномочий на поток данных из модели и к нему).

Его основная задача состоит в том, чтобы, естественно, служить уровню представления выше его и разделить его от образцового слоя ниже при посредничестве между ними. Я предполагаю, что можно думать о нем как о мозге приложения.

Надеюсь, это поможет,

Yuval =8-)

0
ответ дан 3 December 2019 в 16:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: