Модель – вид – адаптер - Model–view–adapter

Модель – вид – адаптер (МВА) или же посредник-контроллер MVC это программное обеспечение архитектурный образец и многоуровневая архитектура. В сложных компьютерных приложениях, которые предоставляют пользователям большие объемы данных, разработчики часто хотят разделить данные (модель) и пользовательский интерфейс (view) заботится о том, чтобы изменения в пользовательском интерфейсе не повлияли на обработку данных и чтобы данные можно было реорганизовать без изменения пользовательского интерфейса. МВА и традиционные MVC оба пытаются решить одну и ту же проблему, но с двумя разными стилями решения. Традиционный MVC упорядочивает модель (например, структуры данных и хранилище), представление (например, пользовательский интерфейс) и контроллер (например, бизнес-логику) в виде треугольника с моделью, представлением и контроллером в качестве вершин, так что некоторая информация течет между модель и виды вне прямого контроля контроллера. Адаптер модель – вид решает эту проблему иначе, чем модель – представление – контроллер путем размещения модели, адаптера или контроллера-посредника и линейного просмотра без каких-либо связей напрямую между моделью и видом.[1][2]

Вид и модель не взаимодействуют напрямую

Представление полностью отделено от модели, так что представление и модель могут взаимодействовать только через посреднический контроллер или адаптер между представлением и моделью. Благодаря такому расположению только адаптер или посреднический контроллер знает как модель, так и представление, потому что ответственность за адаптацию или посредничество между моделью и представлением лежит исключительно на адаптере или посредническом контроллере - отсюда имена адаптер и посредник. Модель и вид намеренно не обращают внимания друг на друга. В традиционном MVC модель и представление осведомлены друг о друге, что может допускать невыгодное объединение проблем представления (например, пользовательского интерфейса) с моделью (например, базой данных) и наоборот, когда архитектура могла бы лучше обслуживаться схема базы данных и представление информации в пользовательском интерфейсе полностью отделены друг от друга и позволяют радикально отличаться друг от друга. Например, в Текстовый редактор, модель может быть лучше всего штучный стол (вместо, скажем, буфер промежутка или связанный список из линии ). Но пользовательский интерфейс должен представлять окончательное состояние редактирования файла, а не какое-то прямое информационная перегрузка представление подробных необработанных дельт отмены-повтора и дополнительных операций над этим файлом с момента начала текущего сеанса редактирования.

Модель намеренно не обращает внимания на взгляды

Этот разделение проблем позволяет множеству различных представлений косвенно обращаться к одной и той же модели через один и тот же адаптер или через один и тот же класс адаптеров. Например, к одной базовой модели, схеме и технологии хранения данных можно получить доступ через разные представления - например, Qt GUI, Microsoft MFC Графический интерфейс, GTK + Графический интерфейс, Microsoft .СЕТЬ Графический интерфейс, Ява Качать Графический интерфейс, Silverlight интернет сайт, и AJAX веб-сайт - где (в отличие от традиционного MVC) модель полностью игнорирует, какая информация течет к этим пользовательские интерфейсы. Адаптер или класс адаптеров позволяют модели полностью забыть о том, что она поддерживает несколько пользовательских интерфейсов и, возможно, даже поддерживает это разнообразие одновременно. Для модели эти несколько типов пользовательского интерфейса будут выглядеть как несколько экземпляров общего пользователя, не обращающего внимания на тип технологии.

View намеренно не обращает внимания на модели

Точно так же любой пользовательский интерфейс можно намеренно оставить без внимания к большому количеству различных моделей, которые могут лежать в основе промежуточного контроллера или адаптера. Например, один и тот же веб-сайт может игнорироваться тем фактом, что его может обслуживать (A) SQL сервер базы данных Такие как PostgreSQL, Sybase SQL Server, или же Microsoft SQL Server который имеет бизнес-логика встроен в базу данных сервер через хранимые процедуры и это сделки что сервер может выполнить откат или (B) сервер базы данных SQL, такой как MySQL которому не хватает одной или нескольких из этих возможностей, или (C) не в SQL RDF база данных, потому что веб-сайт взаимодействует только с посредническим контроллером или адаптером, а не напрямую с моделью.

Несколько адаптеров между одной парой модель-вид

Кроме того, можно создать несколько адаптеров, чтобы изменить способ представления данных в одном представлении для данной модели. Например, разные адаптеры могут накладывать разные примитивные наборы данных, которые, в свою очередь, накладывают разную бизнес-логику для одной и той же базовой базы данных и для одного и того же внешне представленного веб-сайта. В этом сценарии класс различных адаптеров или контроллеров-посредников может представлять вариации бизнес-логики между одной и той же моделью базы данных и одним и тем же представлением веб-сайта.

Смотрите также

Рекомендации

  1. ^ Замудио Лопес, Шейди Анель; Сантаолая Сальгадо, Рене; Фрагозо Диас, Оливия Грасиела (июнь 2012 г.). «Реструктуризация объектно-ориентированных фреймворков в архитектуру модель-представление-адаптер». IEEE Latin America Transactions (на испанском). 10 (4): 2010–2016. Дои:10.1109 / TLA.2012.6272488.
  2. ^ Тируватукал, Джордж К .; Лойфер, Константин (2018), «Управление параллелизмом в мобильных пользовательских интерфейсах с примерами в Android», Темы параллельных и распределенных вычислений, Springer, Cham, стр. 243–285, Дои:10.1007/978-3-319-93109-8_9, ISBN  9783319931081