Моде́ль–вигляд–контро́лер (MVC, Модель–представлення–контролер, англ. Model-view-controller) — архітектурний шаблон, який використовується під час проєктування та розробки програмного забезпечення.
Цей шаблон передбачає поділ системи на три взаємопов'язані частини: модель даних, вигляд (інтерфейс користувача) та модуль керування. Застосовується для відокремлення даних (моделі) від інтерфейсу користувача (вигляду) так, щоб зміни інтерфейсу користувача мінімально впливали на роботу з даними, а зміни в моделі даних могли здійснюватися без змін інтерфейсу користувача.
Мета шаблону — гнучкий дизайн програмного забезпечення, який повинен полегшувати подальші зміни чи розширення програм, а також надавати можливість повторного використання окремих компонентів програми. Крім того використання цього шаблону у великих системах сприяє впорядкованості їхньої структури та робить їх більш зрозумілими шляхом зменшення складності.
Опис та функції компонентів
Цей розділ не містить . |
У рамках архітектурного шаблону модель–вигляд–контролер (MVC) програма поділяється на три окремі, але взаємопов'язані частини з розподілом функцій між компонентами. Модель (Model) відповідає за зберігання даних та їхню структуру. Вигляд (View) відповідальний за представлення цих даних користувачеві, тобто інтерфейс програми. Контролер (Controller) керує компонентами, отримує сигнали у вигляді реакції на дії користувача (зміна положення курсора миші, натискання кнопки, ввід даних в текстове поле) і передає дані у модель.
- Модель є центральним компонентом шаблону MVC і відображає поведінку застосунку, незалежну від інтерфейсу користувача. Модель стосується прямого керування даними, логікою та правилами застосунку.
- Активна модель - вигляд відстежує зміни в моделі та реагує на них.
- Пасивна модель - вигляд оновлюється через контролер.
- Вигляд може являти собою будь-яке представлення інформації, одержуване на виході, наприклад графік чи діаграму. Одночасно можуть співіснувати кілька виглядів (представлень) однієї й тієї ж інформації, наприклад гістограма для керівництва компанії й таблиці для бухгалтерії.
- Контролер одержує вхідні дані й перетворює їх на команди для моделі чи вигляду.
Модель інкапсулює ядро даних і основний функціонал їхньої обробки та не залежить від процесу вводу чи виводу даних.
Вигляд може мати декілька взаємопов'язаних областей, наприклад різні таблиці та поля форм, в яких відображаються дані.
У функції контролера входить відстеження визначених подій, що виникають в результаті дій користувача. Контролер дозволяє структурувати код шляхом групування пов'язаних дій в окремий клас. Наприклад у типовому MVC-проєкті може бути користувацький контролер, що містить групу методів, пов'язаних з управлінням обліковим записом користувача, таких як реєстрація, авторизація, редагування профілю та зміна пароля.
Зареєстровані події транслюються в різні запити, що спрямовуються компонентам моделі або об'єктам, відповідальним за відображення даних. Відокремлення моделі від вигляду даних дозволяє незалежно використовувати різні компоненти для відображення інформації. Таким чином, якщо користувач через контролер внесе зміни до моделі даних, то інформація, подана одним або декількома візуальними компонентами, буде автоматично відкоригована відповідно до змін, що відбулися.
Реалізації
Концепція MVC вперше застосувалася при проєктуванні мови програмування Smalltalk як модель для інтерфейсу користувача. Також в область застосування концепції входить реалізація каркаса документ-вид (Document-View) в рамках бібліотеки MFC для мови Visual C++. У сучасних технологіях концепція MVC представлена схемою JSP Model 1/2 для динамічної обробки Web-змісту на основі Java Server Pages (JSP).
Java
У мові програмування Java концепція MVC підтримується на рівні стандартних класів-бібліотек. В результаті використання парадигми MVC програміст отримує у своє розпорядження могутню структуру об'єктів-компонентів, функції яких чітко розмежовані, що гарантує надійність і розширюваність системи, що розробляється.
- Вебкаркаси: Struts, /Struts 2, Spring MVC, JavaServer Faces (JSF), , Play
- Десктоп-каркаси: Swing, JFace
ASP.NET
2009 року Microsoft випустив каркас ASP.NET MVC з відкритими кодами.
Objective-c
Model-View-Controller Cocoa Core Competencies (iOS Developer Library) [ 18 серпня 2016 у Wayback Machine.] iOS MVC pattern [ 31 жовтня 2012 у Wayback Machine.]
Застосування MVC для мікроконтролерів
Цей розділ не містить . |
У випадку застосування такої моделі при написанні програмного забезпечення для мікроконтролерів, розподіл задач виглядатиме наступним чином:
- Контролер відповідає за отримання та опрацювання сигналів від вхідних інтерфейсів. Для прикладу, коли, необхідно розрізнити довге та коротке натиснення кнопки, контролер здійснює цю задачу, будь-якими доступними в мікроконтролері засобами та передає закодований сигнал в компоненту Модель. Для даного прикладу Контролер може передати один з трьох кодових значень: BUTTON_IDLE, BUTTON_SHORT_CLICK, BUTTON_LONG_CLICK.
- Компонента Модель у випадку мікроконтролерів по суті реалізує поведінку пристрою в залежності від поточного стану та інформації отриманої з компоненти Контролер.
- Компонента Вигляд у випадку мікроконтролерів це типово є пристрій візуалізації інформації чи певний виконавчий пристрій. Прикладами може бути рідкокристалічний дисплей чи кроковий двигун. Для прикладу, якщо мікроконтролер здійснює керування кроковим двигуном, то компонента вигляд повинна отримувати команду з параметрами DIRECTION та STEPS_COUNT. Для прикладу перший параметр задаватиме напрямок обертання осі двигуна, а другий — кількість кроків. Детальна генерація сигналів, яка потрібна для керування двигуном захована всередині компоненти.
Реалізація
Приклад реалізації шаблону в ASP.NET MVC.
Оголосимо модель, що містить логіку аплікації, не залежну від представлення.
public class OrderDto { public string Name { get; set; } } public interface IOrdersModel { OrderDto[] LoadOrders(); } public class OrdersModel : IOrdersModel { public OrderDto[] LoadOrders() { return new OrderDto[] { new OrderDto(){ Name = "Item1" }, new OrderDto(){ Name = "Item2" }, }; } }
Додамо контролер — компонент, що зв'язує логіку аплікації (модель) із виглядом.
public class OrderController : Controller { private readonly IOrdersModel _ordersModel; public OrderController() { _ordersModel = new OrdersModel(); } // метод-обробник, виконується при взаємодії користувача із виглядом public IActionResult GetOrders() { // керування моделю var orders = _ordersModel.LoadOrders(); // вибір вигляду return View("OrdersView", orders); } }
Та додамо вигляд для взаємодії із користувачем.
Користувач викликає метод контролера із вигляду.
<a asp-controller="Order" asp-action="GetOrders">Get Orders</a>
Вигляд, що обирає контролер.
@model MVC.Controllers.OrderDto[] <ul> @foreach(var order in Model) { <li>@order.Name</li> } </ul>
Див. також
Виноски
- LaLonde, W.R. and J.R. Pugh, Inside Smalltalk, Volume II, Prentice-Hall, 1991.
- Krasner, G.E. and S.T. Pope, A cookbook for using the Model-View-Controller user interface paradigm in Smalltalk-80, Journal of Object-Oriented Programming, 1(3), pp. 26-49, August/September 1988, SIGS Publications, New York, NY, USA, 1988.
- MFC Microsoft Foundation Classes — Бібліотека базових класів Microsoft. Бібліотека класів мови , призначена для розробки застосунків для Windows
- Kruglinski, D., Inside Visual C++, Microsoft Press, 1995.
- JSP (Java Server Pages) — Серверні сторінки Java. Технологія створення динамічних Web-сторінок з використанням Java.
- . Архів оригіналу за 29 серпня 2009. Процитовано 23 травня 2009.
{{}}
: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title ()
Це незавершена стаття про програмне забезпечення. Ви можете проєкту, виправивши або дописавши її. |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Mode l viglyad kontro ler MVC Model predstavlennya kontroler angl Model view controller arhitekturnij shablon yakij vikoristovuyetsya pid chas proyektuvannya ta rozrobki programnogo zabezpechennya Diagrama vzayemodiyi mizh komponentami shablonu MVC Cej shablon peredbachaye podil sistemi na tri vzayemopov yazani chastini model danih viglyad interfejs koristuvacha ta modul keruvannya Zastosovuyetsya dlya vidokremlennya danih modeli vid interfejsu koristuvacha viglyadu tak shob zmini interfejsu koristuvacha minimalno vplivali na robotu z danimi a zmini v modeli danih mogli zdijsnyuvatisya bez zmin interfejsu koristuvacha Meta shablonu gnuchkij dizajn programnogo zabezpechennya yakij povinen polegshuvati podalshi zmini chi rozshirennya program a takozh nadavati mozhlivist povtornogo vikoristannya okremih komponentiv programi Krim togo vikoristannya cogo shablonu u velikih sistemah spriyaye vporyadkovanosti yihnoyi strukturi ta robit yih bilsh zrozumilimi shlyahom zmenshennya skladnosti Opis ta funkciyi komponentivCej rozdil ne mistit posilan na dzherela Vi mozhete dopomogti polipshiti cej rozdil dodavshi posilannya na nadijni avtoritetni dzherela Material bez dzherel mozhe buti piddano sumnivu ta vilucheno U ramkah arhitekturnogo shablonu model viglyad kontroler MVC programa podilyayetsya na tri okremi ale vzayemopov yazani chastini z rozpodilom funkcij mizh komponentami Model Model vidpovidaye za zberigannya danih ta yihnyu strukturu Viglyad View vidpovidalnij za predstavlennya cih danih koristuvachevi tobto interfejs programi Kontroler Controller keruye komponentami otrimuye signali u viglyadi reakciyi na diyi koristuvacha zmina polozhennya kursora mishi natiskannya knopki vvid danih v tekstove pole i peredaye dani u model Model ye centralnim komponentom shablonu MVC i vidobrazhaye povedinku zastosunku nezalezhnu vid interfejsu koristuvacha Model stosuyetsya pryamogo keruvannya danimi logikoyu ta pravilami zastosunku Aktivna model viglyad vidstezhuye zmini v modeli ta reaguye na nih Pasivna model viglyad onovlyuyetsya cherez kontroler Viglyad mozhe yavlyati soboyu bud yake predstavlennya informaciyi oderzhuvane na vihodi napriklad grafik chi diagramu Odnochasno mozhut spivisnuvati kilka viglyadiv predstavlen odniyeyi j tiyeyi zh informaciyi napriklad gistograma dlya kerivnictva kompaniyi j tablici dlya buhgalteriyi Kontroler oderzhuye vhidni dani j peretvoryuye yih na komandi dlya modeli chi viglyadu Model inkapsulyuye yadro danih i osnovnij funkcional yihnoyi obrobki ta ne zalezhit vid procesu vvodu chi vivodu danih Viglyad mozhe mati dekilka vzayemopov yazanih oblastej napriklad rizni tablici ta polya form v yakih vidobrazhayutsya dani U funkciyi kontrolera vhodit vidstezhennya viznachenih podij sho vinikayut v rezultati dij koristuvacha Kontroler dozvolyaye strukturuvati kod shlyahom grupuvannya pov yazanih dij v okremij klas Napriklad u tipovomu MVC proyekti mozhe buti koristuvackij kontroler sho mistit grupu metodiv pov yazanih z upravlinnyam oblikovim zapisom koristuvacha takih yak reyestraciya avtorizaciya redaguvannya profilyu ta zmina parolya Zareyestrovani podiyi translyuyutsya v rizni zapiti sho spryamovuyutsya komponentam modeli abo ob yektam vidpovidalnim za vidobrazhennya danih Vidokremlennya modeli vid viglyadu danih dozvolyaye nezalezhno vikoristovuvati rizni komponenti dlya vidobrazhennya informaciyi Takim chinom yaksho koristuvach cherez kontroler vnese zmini do modeli danih to informaciya podana odnim abo dekilkoma vizualnimi komponentami bude avtomatichno vidkorigovana vidpovidno do zmin sho vidbulisya RealizaciyiKoncepciya MVC vpershe zastosuvalasya pri proyektuvanni movi programuvannya Smalltalk yak model dlya interfejsu koristuvacha Takozh v oblast zastosuvannya koncepciyi vhodit realizaciya karkasa dokument vid Document View v ramkah biblioteki MFC dlya movi Visual C U suchasnih tehnologiyah koncepciya MVC predstavlena shemoyu JSP Model 1 2 dlya dinamichnoyi obrobki Web zmistu na osnovi Java Server Pages JSP Java U movi programuvannya Java koncepciya MVC pidtrimuyetsya na rivni standartnih klasiv bibliotek V rezultati vikoristannya paradigmi MVC programist otrimuye u svoye rozporyadzhennya mogutnyu strukturu ob yektiv komponentiv funkciyi yakih chitko rozmezhovani sho garantuye nadijnist i rozshiryuvanist sistemi sho rozroblyayetsya Vebkarkasi Struts Struts 2 Spring MVC JavaServer Faces JSF Play Desktop karkasi Swing JFace ASP NET 2009 roku Microsoft vipustiv karkas ASP NET MVC z vidkritimi kodami Objective c Model View Controller Cocoa Core Competencies iOS Developer Library 18 serpnya 2016 u Wayback Machine iOS MVC pattern 31 zhovtnya 2012 u Wayback Machine Zastosuvannya MVC dlya mikrokontrolerivCej rozdil ne mistit posilan na dzherela Vi mozhete dopomogti polipshiti cej rozdil dodavshi posilannya na nadijni avtoritetni dzherela Material bez dzherel mozhe buti piddano sumnivu ta vilucheno U vipadku zastosuvannya takoyi modeli pri napisanni programnogo zabezpechennya dlya mikrokontroleriv rozpodil zadach viglyadatime nastupnim chinom Kontroler vidpovidaye za otrimannya ta opracyuvannya signaliv vid vhidnih interfejsiv Dlya prikladu koli neobhidno rozrizniti dovge ta korotke natisnennya knopki kontroler zdijsnyuye cyu zadachu bud yakimi dostupnimi v mikrokontroleri zasobami ta peredaye zakodovanij signal v komponentu Model Dlya danogo prikladu Kontroler mozhe peredati odin z troh kodovih znachen BUTTON IDLE BUTTON SHORT CLICK BUTTON LONG CLICK Komponenta Model u vipadku mikrokontroleriv po suti realizuye povedinku pristroyu v zalezhnosti vid potochnogo stanu ta informaciyi otrimanoyi z komponenti Kontroler Komponenta Viglyad u vipadku mikrokontroleriv ce tipovo ye pristrij vizualizaciyi informaciyi chi pevnij vikonavchij pristrij Prikladami mozhe buti ridkokristalichnij displej chi krokovij dvigun Dlya prikladu yaksho mikrokontroler zdijsnyuye keruvannya krokovim dvigunom to komponenta viglyad povinna otrimuvati komandu z parametrami DIRECTION ta STEPS COUNT Dlya prikladu pershij parametr zadavatime napryamok obertannya osi dviguna a drugij kilkist krokiv Detalna generaciya signaliv yaka potribna dlya keruvannya dvigunom zahovana vseredini komponenti RealizaciyaPriklad realizaciyi shablonu v ASP NET MVC Ogolosimo model sho mistit logiku aplikaciyi ne zalezhnu vid predstavlennya public class OrderDto public string Name get set public interface IOrdersModel OrderDto LoadOrders public class OrdersModel IOrdersModel public OrderDto LoadOrders return new OrderDto new OrderDto Name Item1 new OrderDto Name Item2 Dodamo kontroler komponent sho zv yazuye logiku aplikaciyi model iz viglyadom public class OrderController Controller private readonly IOrdersModel ordersModel public OrderController ordersModel new OrdersModel metod obrobnik vikonuyetsya pri vzayemodiyi koristuvacha iz viglyadom public IActionResult GetOrders keruvannya modelyu var orders ordersModel LoadOrders vibir viglyadu return View OrdersView orders Ta dodamo viglyad dlya vzayemodiyi iz koristuvachem Koristuvach viklikaye metod kontrolera iz viglyadu lt a asp controller Order asp action GetOrders gt Get Orders lt a gt Viglyad sho obiraye kontroler model MVC Controllers OrderDto lt ul gt foreach var order in Model lt li gt order Name lt li gt lt ul gt Div takozhPureMVCVinoskiLaLonde W R and J R Pugh Inside Smalltalk Volume II Prentice Hall 1991 Krasner G E and S T Pope A cookbook for using the Model View Controller user interface paradigm in Smalltalk 80 Journal of Object Oriented Programming 1 3 pp 26 49 August September 1988 SIGS Publications New York NY USA 1988 MFC Microsoft Foundation Classes Biblioteka bazovih klasiv Microsoft Biblioteka klasiv movi C priznachena dlya rozrobki zastosunkiv dlya Windows Kruglinski D Inside Visual C Microsoft Press 1995 JSP Java Server Pages Serverni storinki Java Tehnologiya stvorennya dinamichnih Web storinok z vikoristannyam Java Arhiv originalu za 29 serpnya 2009 Procitovano 23 travnya 2009 a href wiki D0 A8 D0 B0 D0 B1 D0 BB D0 BE D0 BD Cite web title Shablon Cite web cite web a Obslugovuvannya CS1 Storinki z tekstom archived copy yak znachennya parametru title posilannya Ce nezavershena stattya pro programne zabezpechennya Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi