MVVM at MVP

Anonim

Ang layunin ng pag-develop ng software ay upang bumuo ng mga solusyon na tumutugon sa mga pangangailangan at problema para sa mga gumagamit at negosyo. Upang makamit ito, iba't ibang mga teknolohiya at mga pattern ng architecture tulad ng Model-View-ViewModel (MVVM) at Model-View-Presenter (MVP) ay ginamit.

Tulad ng anumang bagay na ginawa, ang unang hakbang ay ang yugto ng pagpaplano at disenyo. Ang proseso ng disenyo ng software ay maaaring isang pagtutukoy batay sa ginustong tool na itinakda ng teknolohiya, at maaari itong mapalibutan ang lahat ng aktibidad mula sa pagbuo-sa-pagpaplano-sa-pagpapatupad-sa-mga pag-update at pagbabago.

Sinasaklaw nito ang disenyo ng arkitektura na mababa ang antas at mataas na antas, batay sa napiling mga pattern ng arkitektura, at ang mga mapa ay magagamit muli sa mga solusyon gamit ang mga pattern ng disenyo.

Istraktura ng Application ng Software

Ang architecture ng software ay tumutukoy sa istraktura ng isang application na nakakatugon sa mga teknikal, pagpapatakbo, at mga kinakailangan ng gumagamit at tumutukoy sa kung paano ang code ay organisado at pinamamahalaan.

Ang pagpapasya sa architecture ng software ng application ay kritikal dahil ito ay hindi isang madaling, nababago bahagi ng isang application na na binuo; samakatuwid ang arkitektura pattern ay dapat na nagpasya bago ang anumang programming commences.

Ang mga pattern ng arkitektura ay medyo naiiba sa mga disenyo ng mga pattern na ang kanilang saklaw ay mas malawak sa pamamagitan ng pagtugon sa higit pang mga teknikal na isyu tulad ng pagganap ng hardware at mga limitasyon, at mataas na availability. Ang mga halimbawa ng iba't ibang mga pattern ng architecture ay MVC, MVVM, at MVP.

Sa kabilang banda, ang mga disenyo ng mga pattern ay pormal na pinakamahuhusay na gawi na nagpapadali sa pag-unlad ng muling paggamit ng bagay at mas madaling mapanatili at baguhin kaysa sa isang arkitektura ng aplikasyon.

Mga Pattern ng Arkitektura

Model View Controller (MVC) ay isa sa mga unang arkitektura pattern na binuo para sa mga aplikasyon sa web, pagkakaroon ng kasikatan mula sa kalagitnaan ng late nineties, lalo na sa Java komunidad.

Ang mas bagong frameworks, tulad ng Django para sa Python at Rails (Ruby on Rails), ay may isang malakas na pagtuon sa mabilis na pag-deploy, kaya ang MVC ay nakuha ang bahagi ng merkado bilang malaking atraksyon sa mga pattern ng arkitektura.

Ayon sa kaugalian, ang pag-unlad ng user interface ay naglalaman ng maraming code upang mahawakan ang kumplikadong lohika kaya ang mga pattern ng arkitektura ay idinisenyo upang mabawasan ang code sa antas ng user interface (UI), ginagawa itong mas malinis at mapapamahalaan.

Kaya, sa pamamagitan ng MVC pattern, isang web application ay binubuo ng

  • Modelo (data)
  • Tingnan (interface upang tingnan at manipulahin ang data)
  • Controller (mga operasyon at pagkilos na isinagawa sa data)

Ang Modelo Pinangangasiwaan ang data at negosyo na lohika at mayroong hindi dependencies sa pagitan ng Modelo at ang Controller o Tingnan.

Ang Tingnan ay nagpapakita ng data sa user sa suportadong format at kinakailangang layout, at kapag Controller tumatanggap ng mga kahilingan ng gumagamit (upang makuha ang data), tinatawagan nito ang mga kaugnay na mapagkukunan na kailangan upang makumpleto ang kahilingan.

Kunin natin ang pattern na ito sa pagbuo ng isang online na tindahan ng libro.

Ang mga gumagamit ay maaaring maghanap, tumingin, magrehistro, at bumili ng mga libro, pati na rin ang pamahalaan ang kanilang mga profile at mga listahan ng libro. Kapag ang isang gumagamit ay nag-click sa kategorya ng SCI-FI, dapat ipakita ang lahat ng kaugnay na mga libro bilang magagamit.

Ang Controllers panghawakan ang mga pagkilos na namamahala sa mga libro (listahan, idagdag, tingnan, atbp). Maaaring magkaroon ng maraming Controllers na may isang pangunahing Controller 'Namumuno sa trapiko'.

Para sa halimbawang ito, ang Controller ay pinangalanan controller_books.php at ang Modelo (hal. model_books.php) ay humahawak sa data at lohika na may kaugnayan sa mga aklat.

Panghuli, naiiba Mga Pananaw ay kinakailangan, tulad ng pagdaragdag ng mga libro sa online na cart o kapag tinitingnan ang detalye ng libro na may mga larawan at mga review.

Ang controller_books.php natatanggap ang aksyon (kahilingan ng user) mula sa pangunahing Controller (hal. index.php). Ang controller_books.php pinag-aaralan ang kahilingan at tinawag ang model_books.php (ang data) upang ibalik ang listahan ng mga SCI-FI na mga libro.

Ang responsibilidad ng Modelo ay upang ibigay ang impormasyong iyon, gamit ang anumang lohika na inilapat (gamit ang mga filter ng paghahanap). Ang Controller pagkatapos ay dadalhin ang impormasyon at ipinapasa ito sa may-katuturan Tingnan (view ng paghahanap, view ng pag-print, detalye view atbp) at ang impormasyon ay iniharap (sa pamamagitan ng Tingnan) sa user na nagsimula ng kahilingan.

Ito ang batayan ng pattern ng MVC, na nagbago ng mga pagkakaiba-iba ng mga pattern ng arkitektura, tulad ng Model-View-Presenter (MVP), Model-View-ViewModel (MVVM), Hierarchical-Model- View-Controller (HMVC) at Model-View-Adapter (MVA), atbp.

MVP Pattern

Model-View-Presenter (MVP)

Ang MVP pattern ay naging sa paligid para sa isang habang at ay isang variant ng MVC. Ito ay partikular na idinisenyo para sa automation ng pagsubok kung saan ang layunin ay upang madagdagan ang halaga ng code na maaaring masuri sa pamamagitan ng pag-automate, at ang pattern ay tumutugon sa ilang mga isyu sa layer ng pagtatanghal, paghihiwalay sa lohika ng negosyo mula sa UI.

Ang screen ay ang View, ang data na ipinapakita nito ay ang Model, at ang Nagtatanghal ay magkabit ng dalawang magkasama.

MVP Binubuo ang mga sumusunod na sangkap na may magkakahiwalay na mga pananagutan:

  • Modelo (tumutukoy sa data na ipapakita)
  • Tingnan (nagpapakita ng data mula sa Modelo at mga ruta ng mga kahilingan ng user sa Presenter).
  • Nagtatanghal (nakikipag-ugnayan sa pagitan ng View at Modelo at pinagsasama ang mga ito)

Ang Tingnan (isang web page) ay nagpapakita at namamahala ng mga kontrol ng pahina sa pamamagitan ng pagpapasa ng mga kaganapan (mga kahilingan ng gumagamit) sa Nagtatanghal na pinasimulan sa Tingnan.

Ang Nagtatanghal tumugon sa mga pangyayaring ito sa pamamagitan ng pagbabasa at pag-update ng Modelo upang baguhin ang Tingnan at samakatuwid, ang Presenter's responsibilidad ay upang maitali ang Modelo at Tingnan.

Pagkatapos ng pagtingin MVC at MVP ang mga pattern, pareho ang parehong may hiwalay na mga pananagutan para sa bawat sangkap at nagtataguyod sila ng paghihiwalay sa pagitan ng Tingnan (UI) at Modelo (data). Ang mga makabuluhang pagkakaiba sa pagitan ng mga pattern na ito ay mas maliwanag kung paano ipinatupad ang mga pattern.

MVP ay maaaring isang kumplikadong pattern upang ipatupad para sa mga advanced na solusyon ngunit tiyak na may mahusay na mga benepisyo kung ipinatupad bilang isang mahusay na dinisenyo solusyon, bagaman ito ay hindi maaaring maging ang angkop na pagpipilian para sa mga simpleng solusyon.

Pattern ng MVVM

Model-View-ViewModel (MVVM)

Ang MVVM pattern ay partikular na dinisenyo para sa Windows Presentation Foundation (WPF) at Microsoft Silverlight platform, at maaari itong magamit sa lahat XAML [i] mga platform.

Ang WPF ay isang sistema ng Microsoft na nagpapakita ng mga interface ng user sa mga programang nakabatay sa Windows at unang inilabas sa. NET Framework 3.0.

MVVM ay pino mula sa MVC at sa ganitong paraan, ang Tingnan ay aktibo sa pag-uugali, mga kaganapan, at mga umiiral na data, at ang Tingnan Sini-synchronize ang ViewModel (na nagbibigay-daan sa paghihiwalay ng pagtatanghal at naglalantad ng mga pamamaraan at mga utos upang pamahalaan at manipulahin ang Modelo.

MVVM Binubuo ang tatlong pangunahing bahagi:

  • Modelo (kumakatawan sa data na may pagpapatunay at lohika sa negosyo)
  • Tingnan (Ang view ay responsable para sa pagtukoy ng istraktura, layout, at hitsura ng kung ano ang nakikita ng gumagamit sa screen. Sa isip, ang view ay tinukoy sa pamamagitan lamang ng XAML, na may limitadong code-behind na walang naglalaman ng logic ng negosyo. umiiral sa pagitan ng Tingnan at ViewModel upang ipakita ang pag-synchronize sa Model at ViewModel sa View)
  • ViewModel (naghihiwalay sa View mula sa Modelo, at naglalantad ng mga pamamaraan at mga utos upang mamanipula ang data (Modelo).

Ang Tingnan tumatanggap ng data mula sa ViewModel (sa pamamagitan ng data-binding at pamamaraan), at sa runtime, ang Tingnan ay magbabago kapag tumutugon sa mga kaganapan sa ViewModel.

Ang ViewModel mediates between the Tingnan at Modelo at pinangangasiwaan ang Tingnan lohika. Nakikipag-ugnayan ito sa Modelo - pagkuha ng data mula sa Modelo at pagtatanghal nito sa Tingnan upang ipakita.

Ang mga sangkap na ito ay ang lahat ng decoupled mula sa bawat isa na nagpapahintulot sa mas higit na kakayahang umangkop upang gumana sa mga ito nang nakapag-iisa, ihiwalay yunit ng pagsubok, at swap out ito, nang hindi naaapektuhan ang anumang iba pang mga sangkap.

Ang istrakturang ito ay nagpapahintulot sa Modelo at iba pang mga sangkap upang magbago nang nakapag-iisa, na nagpapahintulot sa mga developer na gumana sa iba't ibang aspeto ng solusyon kasabay. Halimbawa, kung saan nagtatrabaho ang mga designer sa Tingnan, sila lang ay gumagawa ng mga sample ng data nang hindi nangangailangan ng access sa iba pang mga sangkap. Pinapadali nito ang madaling pagbabago ng disenyo ng user interface bilang Tingnan ay ipinatupad sa XAML.

Tulad ng nabanggit sa bago MVP, ang mga simpleng solusyon ay hindi nangangailangan ng arkitektura at disenyo ng mga pattern, tulad ng "Hello World!" ay masyadong pangunahing upang sundin ang anumang pattern; gayunpaman, kung mas maraming mga tampok, function, at mga sangkap ang ipinakilala, ang pagiging kumplikado ng application ay nagdaragdag at gayon din ang halaga ng code na kailangang pinamamahalaang.

Sa buod

Dahil sa simula ng pag-unlad ng user interface, ang mga pattern ng disenyo ay nagiging mas popular upang gawing mas madali ang proseso ng pag-unlad, ang mga application ay mas maitatag at mapadali nito ang mas madaling pagsubok.

Ang pagkakaiba sa pagitan ng MVP at MVVM Pattern:

  • Sa pareho MVP at MVVM, ang Tingnan ay ang entry point sa application
  • Sa MVP, mayroong isa-sa-isang pagmamapa sa pagitan ng Tingnan at Nagtatanghal, kung saan nasa MVVM, ang relasyon ay isa-sa-maraming sa pagitan ng Tingnan at ViewModel.
  • MVP ay ginagamit lalo na para sa mga application ng Windows Forms at Windows Phone at MVVM ay idinisenyo para sa Silverlight, WPF, Knockout / AngularJS, atbp.