Model-View-Controller

от Уикипедия, свободната енциклопедия
Направо към: навигация, търсене
Опростена диаграма, изобразяваща взаимоотношенията между Model, View, и Controller

Модел-Изглед-Контролер (Model-View-Controller или MVC) е архитектурен шаблон за дизайн в програмирането, основан на разделянето на бизнес логиката от графичния интерфейс и данните в дадено приложение. За пръв път този шаблон за дизайн е използван в програмния език Smalltalk.

Описание[редактиране | edit source]

  • Модел - ядрото на приложението, предопределено от областта, за която се разработва; обикновено това са данните от реалния свят, които сме моделирали и над които искаме да работим - да въвеждаме, променяме, визуализираме и т.н.Трябва да се направи разлика между реалния обкръжаващ ни свят и въображаемия абстрактен моделен свят, който е продукт на нашият разум, който ние възприемаме във вид на твърдения, формули, математическа символика , схеми и други помощни средства. Например в банково приложение това биха били класовете, описващи клиентите, техните сметки, транзакциите, които са осъществили и т.н., както и класовете за извършване на операции над тези обекти (engines) - например клас Transfer с методи като createInterBankTransfer(), createInnerBankTransfer(), getCash() и т.н.
  • Изглед (англ. View) - тази част от изходния код на приложението, отговорна за показването на данните от модела. Например изгледът може да се състои от PHP шаблонни класове, JSP страници, ASP страници, JFrame наследници в Swing приложение. Зависи от това какъв графичен интерфейс се прави и каква платформа се използва;
  • Контролер - тази част от сорс кода(клас или библиотека), която взима данните от модела или извиква допълнителни методи върху модела, предварително обработва данните, и чак след това ги дава на изгледа. Например може да бъде създаден един малък обект, в който да бъдат сложени данните за транзакцията - като в контролера бъдат взети данните за транзакцията от модела, бъдат преведени датите от UNIX формат във четим от потребителя формат, бъде преобразувана валутата от долари в евро например, бъде закръглено до втория знак вместо да се виждат данните както са в модела (и в базата) до 10тия. Също така когато се прави уеб графичен интерфейс това би довело до много лесна модификация на HTML кода дори от човек, който не е програмист - той ще гледа на шаблона просто като на обикновена HTML страница.

Предимства[редактиране | edit source]

  • Моделът е независим от контролера и изгледа
  • Моделът може да бъде планиран и осъществен независимо от другите части на системата
  • За един и същи модел могат да бъдат осъществени различни изгледи (интерфейси ) – например уеб интерфейс и нативен интерфейс към Facebook
  • Контролерът и изгледът могат да бъдат променени, без да се налага промяна в модела

Недостатъци[редактиране | edit source]

  • Софтуерната система достига ново ниво на сложност, което я прави по-трудно разбираема за софтуерните разработчици, работещи по нея.

Външни препратки[редактиране | edit source]

  • Model-View-Controller Song
  • книга: Ралф Джонсън, Ричард Хелм, Ерик Гама, Design Patterns (Шаблони за дизайн): Елементи на обектно-ориентирания софтуер за многократно използване, СофтПрес