Модель-вид-контролер

Діаграма взаємодії між компонентами шаблону MVC

Моде́ль–вигляд–контро́лер (MVC, Модель–представлення–контролер, англ. Model-view-controller) — архітектурний шаблон, який використовується під час проєктування та розробки програмного забезпечення.

Цей шаблон передбачає поділ системи на три взаємопов'язані частини: модель даних, вигляд (інтерфейс користувача) та модуль керування. Застосовується для відокремлення даних (моделі) від інтерфейсу користувача (вигляду) так, щоб зміни інтерфейсу користувача мінімально впливали на роботу з даними, а зміни в моделі даних могли здійснюватися без змін інтерфейсу користувача.

Мета шаблону — гнучкий дизайн програмного забезпечення, який повинен полегшувати подальші зміни чи розширення програм, а також надавати можливість повторного використання окремих компонентів програми. Крім того використання цього шаблону у великих системах сприяє впорядкованості їхньої структури та робить їх більш зрозумілими шляхом зменшення складності.

Опис та функції компонентів

У рамках архітектурного шаблону модель–вигляд–контролер (MVC) програма поділяється на три окремі, але взаємопов'язані частини з розподілом функцій між компонентами. Модель (Model) відповідає за зберігання даних та їхню структуру. Вигляд (View) відповідальний за представлення цих даних користувачеві, тобто інтерфейс програми. Контролер (Controller) керує компонентами, отримує сигнали у вигляді реакції на дії користувача (зміна положення курсора миші, натискання кнопки, ввід даних в текстове поле) і передає дані у модель.

  • Модель є центральним компонентом шаблону MVC і відображає поведінку застосунку, незалежну від інтерфейсу користувача. Модель стосується прямого керування даними, логікою та правилами застосунку.
    • Активна модель - вигляд відстежує зміни в моделі та реагує на них.
    • Пасивна модель - вигляд оновлюється через контролер.
  • Вигляд може являти собою будь-яке представлення інформації, одержуване на виході, наприклад графік чи діаграму. Одночасно можуть співіснувати кілька виглядів (представлень) однієї й тієї ж інформації, наприклад гістограма для керівництва компанії й таблиці для бухгалтерії.
  • Контролер одержує вхідні дані й перетворює їх на команди для моделі чи вигляду.

Модель інкапсулює ядро даних і основний функціонал їхньої обробки та не залежить від процесу вводу чи виводу даних.

Вигляд може мати декілька взаємопов'язаних областей, наприклад різні таблиці та поля форм, в яких відображаються дані.

У функції контролера входить відстеження визначених подій, що виникають в результаті дій користувача. Контролер дозволяє структурувати код шляхом групування пов'язаних дій в окремий клас. Наприклад у типовому MVC-проєкті може бути користувацький контролер, що містить групу методів, пов'язаних з управлінням обліковим записом користувача, таких як реєстрація, авторизація, редагування профілю та зміна пароля.

Зареєстровані події транслюються в різні запити, що спрямовуються компонентам моделі або об'єктам, відповідальним за відображення даних. Відокремлення моделі від вигляду даних дозволяє незалежно використовувати різні компоненти для відображення інформації. Таким чином, якщо користувач через контролер внесе зміни до моделі даних, то інформація, подана одним або декількома візуальними компонентами, буде автоматично відкоригована відповідно до змін, що відбулися.

Реалізації

Концепція MVC вперше застосувалася при проєктуванні мови програмування Smalltalk як модель для інтерфейсу користувача[1][2]. Також в область застосування концепції входить реалізація каркаса документ-вид (Document-View) в рамках бібліотеки MFC[3] для мови Visual C++[4]. У сучасних технологіях концепція MVC представлена схемою JSP Model 1/2 для динамічної обробки Web-змісту на основі Java Server Pages (JSP)[5].

Java

У мові програмування Java концепція MVC підтримується на рівні стандартних класів-бібліотек. В результаті використання парадигми MVC програміст отримує у своє розпорядження могутню структуру об'єктів-компонентів, функції яких чітко розмежовані, що гарантує надійність і розширюваність системи, що розробляється.

ASP.NET

2009 року Microsoft випустив каркас ASP.NET MVC з відкритими кодами.[6]

Objective-c

Model-View-Controller Cocoa Core Competencies (iOS Developer Library) [Архівовано 18 серпня 2016 у Wayback Machine.] iOS MVC pattern [Архівовано 31 жовтня 2012 у Wayback Machine.]

Застосування MVC для мікроконтролерів

У випадку застосування такої моделі при написанні програмного забезпечення для мікроконтролерів, розподіл задач виглядатиме наступним чином:

  1. Контролер відповідає за отримання та опрацювання сигналів від вхідних інтерфейсів. Для прикладу, коли, необхідно розрізнити довге та коротке натиснення кнопки, контролер здійснює цю задачу, будь-якими доступними в мікроконтролері засобами та передає закодований сигнал в компоненту Модель. Для даного прикладу Контролер може передати один з трьох кодових значень: BUTTON_IDLE, BUTTON_SHORT_CLICK, BUTTON_LONG_CLICK.
  2. Компонента Модель у випадку мікроконтролерів по суті реалізує поведінку пристрою в залежності від поточного стану та інформації отриманої з компоненти Контролер.
  3. Компонента Вигляд у випадку мікроконтролерів це типово є пристрій візуалізації інформації чи певний виконавчий пристрій. Прикладами може бути рідкокристалічний дисплей чи кроковий двигун. Для прикладу, якщо мікроконтролер здійснює керування кроковим двигуном, то компонента вигляд повинна отримувати команду з параметрами 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>

Див. також

Виноски

  1. LaLonde, W.R. and J.R. Pugh, Inside Smalltalk, Volume II, Prentice-Hall, 1991.
  2. 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.
  3. MFC Microsoft Foundation Classes — Бібліотека базових класів Microsoft. Бібліотека класів мови C++, призначена для розробки застосунків для Windows
  4. Kruglinski, D., Inside Visual C++, Microsoft Press, 1995.
  5. JSP (Java Server Pages) — Серверні сторінки Java. Технологія створення динамічних Web-сторінок з використанням Java.
  6. Архівована копія. Архів оригіналу за 29 серпня 2009. Процитовано 23 травня 2009.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)

Read other articles:

Postal code system Greater postal zones of Taiwan Postal codes (Chinese: 郵遞區號; pinyin: Yóudì qūhào; Pe̍h-ōe-jī: Iû-tē khu-hō) in Taiwan is a system of three + three digits used by Chunghwa Post.[1] There are 368 sets of three-digit codes for townships, county-administered cities, and districts in Taiwan. The cities of Chiayi and Hsinchu have a single code covering all their districts. The uninhabited islands Pratas (Dongsha) and Spratly (Nansha) each have...

 

Halaman ini memuat daftar gunung di Pulau Jawa. Daftar ini tidak dimaksudkan sebagai suatu daftar yang lengkap atau selalu terbarui. Jika Anda melihat artikel yang seharusnya tercantum di sini, silakan sunting halaman ini dan tambahkan pranala ke artikel tersebut. Gunakan perubahan terkait untuk melihat perubahan terbaru dari artikel-artikel yang tercantum pada halaman ini. Gunung Parang, Jawa Barat Daftar gunung di Jawa No Nama Gunung Meter Provinsi 1 Gunung Alang-alang 2240 Jawa Tengah 2 Gu...

 

Russian violinist, composer, and conductor (1889–1985) This article is about the violinist. For his son, the actor, see Efrem Zimbalist Jr. Efrem ZimbalistZimbalist with his violin, c. 1915 – c. 1920BornEfrem Aleksandrovich Zimbalist (Russian: Ефрем Александрович Цимбалист)April 21 [O.S. April 9], 1889[1][2][3]Rostov-on-Don, Russian EmpireDiedFebruary 22, 1985(1985-02-22) (aged 95)[4]Reno, Nevada, U.S.Occupat...

Scottish cyclist (born 1990) Neah EvansEvans in 2020Personal informationBorn (1990-08-01) 1 August 1990 (age 33)Langbank, Scotland[1]Team informationDisciplineTrackRoleRider Medal record Women's track cycling Representing  Great Britain Olympic Games 2020 Tokyo Team pursuit World Championships 2022 Saint-Quentin-en-Yvelines Points race 2023 Glasgow Madison 2020 Berlin Team pursuit 2022 Saint-Quentin-en-Yvelines Team pursuit 2021 Roubaix Madison 2021 Roubaix Team pursuit Euro...

 

Kráľova hoľaKráľova hoľaHighest pointElevation1,946 m (6,385 ft)Coordinates48°53′N 20°8′E / 48.883°N 20.133°E / 48.883; 20.133GeographyKráľova hoľaLocation in Slovakia LocationLow Tatras National Park, Banská Bystrica, SlovakiaParent rangeLow TatrasClimbingEasiest routehike Kráľova hoľa (Slovak pronunciation: [ˈkraːʎɔʋa ˈɦɔʎa]; German: Königsberg; Hungarian: Király-hegy,[1] literally King's Mountain) is th...

 

Behavioural and physical changes due to the consumption of alcohol Drunk redirects here. For other uses, see Drunk (disambiguation). Medical conditionAlcohol intoxicationOther namesDrunkenness, ethanol intoxication[1][2]The Drunkenness of Noah by Michelangelo, 1509SpecialtyToxicology, psychiatrySymptomsMild: Mild sedation, decreased coordination[3]Moderate: Slurred speech, trouble walking, vomiting[3]Severe: Decreased effort to breathe, coma[3]Complicat...

Ini adalah daftar dinamis, yang mungkin tidak dapat memuaskan standar tertentu untuk kelengkapan. Anda dapat membantu dengan mengembangkannya dengan menambahkan klaim yang diberikan sumber tepercaya. Berikut ini adalah daftar anggota Ksatria Columbus yang hidup dan meninggal, keluarga Katolik terbesar di dunia, persaudaraan, dan organisasi layanan sukarela. Perwira tertinggi Artikel utama: Ksatria Tertinggi dari Ksatria Columbus Ksatria Tertinggi[1] Deputi Ksatria Tertinggi[1]...

 

Offensiva di Belgradoparte del Fronte orientale e del Fronte jugoslavo della seconda guerra mondialeReparti di carri T-34 del 4º Corpo meccanizzato delle guardie in preparazione dell'offensiva nei BalcaniData28 settembre - 20 ottobre 1944 LuogoBelgrado, Serbia EsitoVittoria sovietica e dei partigiani jugoslavi con il concorso dei bulgari Schieramenti Germania  Serbia Unione Sovietica AVNOJ Bulgaria Comandanti Maximilian von Weichs Alexander Löhr Hans-Gustav Felber Friedr...

 

† Стеллерова корова Муляж стеллеровой коровы в Лондонском музее естествознания Научная классификация Домен:ЭукариотыЦарство:ЖивотныеПодцарство:ЭуметазоиБез ранга:Двусторонне-симметричныеБез ранга:ВторичноротыеТип:ХордовыеПодтип:ПозвоночныеИнфратип:Челюстно�...

Artikel ini sebatang kara, artinya tidak ada artikel lain yang memiliki pranala balik ke halaman ini.Bantulah menambah pranala ke artikel ini dari artikel yang berhubungan atau coba peralatan pencari pranala.Tag ini diberikan pada Oktober 2016. Tujuh Tradisi Komunikasi merupakan dasar-dasar dari teori-teori komunikasi yang memiliki kesamaan, sehingga dikelompokan menjadi tujuh tradisi komunikasi. Tradisi ini ditemukan oleh Robert T. Craig. Craig berpendapat bahwa ilmu komunikasi tidak dapat d...

 

This article does not cite any sources. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: La Pintada, Antioquia – news · newspapers · books · scholar · JSTOR (January 2013) (Learn how and when to remove this message) Municipality and town in Antioquia Department, ColombiaLa PintadaMunicipality and town FlagLocation of the municipality and town of La Pintada in the An...

 

Private university in Fayette, Missouri, U.S. Central Methodist UniversityFormer namesCentral College (1854–1961)Central Methodist College (1961–2004)TypePrivateEstablished1854Religious affiliationUnited Methodist ChurchAcademic affiliationsCICIAMSCUNAICU[1]Endowment31.4million[2]PresidentRoger DrakeStudents3,382[3]Undergraduates5,437 (total)[4]1,185 (main campus)[5]4,252 (off-campus extended studies)[3]Postgraduates225[4]LocationFay...

此条目序言章节没有充分总结全文内容要点。 (2019年3月21日)请考虑扩充序言,清晰概述条目所有重點。请在条目的讨论页讨论此问题。 哈萨克斯坦總統哈薩克總統旗現任Қасым-Жомарт Кемелұлы Тоқаев卡瑟姆若马尔特·托卡耶夫自2019年3月20日在任任期7年首任努尔苏丹·纳扎尔巴耶夫设立1990年4月24日(哈薩克蘇維埃社會主義共和國總統) 哈萨克斯坦 哈萨克斯坦政府...

 

SMK Negeri 1 RangkasbitungInformasiDidirikanMaret 1966JenisSekolah Menengah Kejuruan NegeriAkreditasiAKepala SekolahDrs. H. Mukmin, M.PdJumlah kelas46Jurusan atau peminatanTeknologi, Perkantoran, Pemasaran dan AkuntansiRentang kelasX, XI dan XIIKurikulumKurikulum SMK Pusat KeunggulanStatusNegeriAlamatLokasiJl. Dewi Sartika no. 61L Komplek Pendidikan, Lebak, Banten, IndonesiaSitus webSMK Negeri 1 [email protected] SMKN 1 Rangkasbitung adalah se...

 

Church of San BenetoReligionAffiliationRoman CatholicLocationMunicipalityVeniceCountryItalyLocation within VeniceGeographic coordinates45°26′08″N 12°19′57″E / 45.435626°N 12.332386°E / 45.435626; 12.332386ArchitectureTypeChurchStyleBaroqueCompleted1685 The Chiesa di San Benedetto (Church of Saint Benedict) is a Roman Catholic church in Venice, northern Italy. Generally known as San Beneto in the Venetian dialect, the church faces the square named after it, ...

Jamang yang bermotif ukiran enggang gading yang didestilir tampak seperti bentuk bunga atau tumbuhan Jamang adalah ornamen ukiran kayu yang terdapat pada sudut-sudut atap rumah Banjar/masjid tradisional Banjar yang biasanya berbentuk ukiran burung enggang gading atau ular (naga) yang didestilir berbetuk bunga-bungaan. Kedua makhluk tersebut bermakna simbol dari dunia atas dan dunia bawah yaitu prinsip Dwitunggal Semesta yang menguasai Jagat Raya. Jamang terletak di antara Layang-Layang. Jaman...

 

State in northern India State in North India, IndiaUttarakhandStateState of UttarakhandThe Garhwal Himalayas from AuliAarti at Har Ki PauriBadrinath TempleRaj Bhavan in NainitalJim Corbett National ParkKedarnath Temple Emblem of UttarakhandEtymology: Northern LandNickname: Devbhumi (Land of Gods)Motto: Satyameva Jayate (Truth alone triumphs)Anthem: Uttarakhand Devbhumi Matribhumi (Uttarakhand, Land of the Gods, O Motherland!)[1]Location of Uttarakhand in IndiaCoordinates: 30...

 

American college basketball season 2006–07 Drexel Dragons men's basketballNIT tournament first round, L 56–63ConferenceColonial Athletic AssociationRecord23–9 (13–5 CAA)Head coachBruiser Flint (6th season)Assistant coaches Geoff Arnold (6th season) Mike Connors (6th season) Tony Chiles (3rd season) Home arenaDaskalakis Athletic CenterSeasons← 2005–062007–08 → 2006–07 CAA men's basketball standings vte Conf Overall Team W   L   PCT W ...

Local Government Commission for England redirects here. For the earlier body, see Local Government Commission for England (1958–1967). United Kingdom legislationLocal Government Act 1992Act of ParliamentParliament of the United KingdomLong titleAn Act to make new provision, by giving effect to proposals in Cm. 1599 (The Citizen's Charter) relating to publicity and competition, for securing economy, efficiency and effectiveness in the manner in which local authorities carry on certain activi...

 

本列表中未注明礼仪者皆为罗马礼。必要处已注明为罗马礼。本列表除亚洲外,还包括位于欧洲和非洲的阿拉伯地区(除肯尼亚外),但未包括俄罗斯。有主教团者注明团名,无主教团者注国名。 阿富汗 天主教阿富汗自治传教区 阿拉伯地区拉丁礼主教团 该主教团成员来自塞浦路斯,吉布提,埃及,伊拉克,以色列,约旦,肯尼亚,科威特,黎巴嫩,巴勒斯坦,索马里,叙利�...