Syftet med mjukvaruutveckling är att bygga lösningar som tillgodoser behov och problem för användare och företag. För att uppnå detta, olika tekniker och arkitektur mönster som Model-View-ViewModel (MVVM) och Model-View-Presenter (MVP) används.
Som med allt som tillverkas är det första steget planerings- och designfasen. Programvaruprocessen kan vara en specifikation baserad på den föredragna tekniksäkerhetsuppsättningen, och den kan omfatta all aktivitet från koncept - till - planering - till - implementering - till - uppdateringar och modifieringar.
Den täcker den låga och höga arkitektoniska konstruktionen, baserat på utvalda arkitekturmönster, och kartlägger återanvändbara lösningar med hjälp av mönster.
Programarkitektur definierar en applikations struktur som uppfyller tekniska, operativa och användarkrav och hänvisar till hur koden är organiserad och hanterad.
Att bestämma om en programvara är arkitektur är kritisk eftersom det inte är en lätt, bytbar del av en applikation som redan är utvecklad. Därför måste det arkitektoniska mönstret avgöras innan någon programmering påbörjas.
Arkitektoniska mönster är något annorlunda än designmönster, eftersom deras omfattning är mycket bredare genom att ta itu med fler tekniska problem som hårdvarans prestanda och begränsningar och hög tillgänglighet. Exempel på olika arkitekturmönster är MVC, MVVM och MVP.
Å andra sidan är designmönster formaliserade bästa praxis som underlättar återanvändningsobjektorienterad utveckling och är enklare att underhålla och förändra än en applikations arkitektur.
Model View Controller (MVC) var ett av de första arkitektoniska mönster som utvecklats för webbapplikationer, och blev populär från mitten till slutet av nittiotalet, särskilt med Java-gemenskapen.
De nyare ramarna, som Django for Python and Rails (Ruby on Rails), har ett starkt fokus på snabb utbyggnad. Därför tar MVC marknadsandelar som den stora attraktionen i arkitektoniska mönster.
Traditionellt innehöll användargränssnittet mycket kod för hantering av komplicerad logik, så arkitekturmönster var utformade för att minska koden på användargränssnittets gränssnitt (UI), vilket gör det mer "rent" och hanterbart.
Så, med MVC-mönstret, består en webbapplikation av
De Modell hanterar data och affärslogik och det finns Nej beroenden mellan Modell och den Kontrollant eller Se.
De Se presenterar data för användaren i det format som stöds och den nödvändiga layouten, och när Kontrollant tar emot användarförfrågningar (för att hämta data), det ringer de relevanta resurserna som behövs för att slutföra begäran.
Låt oss tillämpa det här mönstret för att bygga en online bokhandel.
Användare kan söka, visa, registrera och köpa böcker, samt hantera sina profiler och boklistor. När en användare klickar på SCI-FI-kategorin ska alla relaterade böcker visas som tillgängliga.
De controllers hantera de åtgärder som hanterar böckerna (lista, lägg till, visa osv.). Det kan vara flera controllers med en huvud Kontrollant "styra trafiken".
För detta exempel, Kontrollant heter controller_books.php och Modell (t ex model_books.php) hanterar data och logik relaterad till böckerna.
Slutligen, olika Visningar kommer att krävas, som när du lägger till böcker i online-vagnen eller när du tittar på bokdetaljen med bilder och recensioner.
De controller_books.php tar emot åtgärden (användarförfrågan) från huvudmenyn Kontrollant (t.ex. index.php). De controller_books.php analyserar begäran och kallar model_books.php (data) för att returnera listan över SCI-FI-böcker.
Ansvaret för Modell är att tillhandahålla den informationen, med hjälp av någon logik som tillämpades (med hjälp av sökfilter). De Kontrollant tar sedan informationen och skickar den till relevanten Se (sökvisning, utskriftsvy, detaljvy etc) och informationen presenteras (via Se) till användaren som initierade begäran.
Detta är grunden för MVC-mönstret, som har utvecklat gybvariationer av arkitekturmönster, såsom Model View View (MVP), Model View ViewModel (MVVM), Hierarchical-Model View-Controller (HMVC), och modell-visa-adapter (MVA), etc..
MVP-mönster
De MVP-mönster har funnits en stund och är en variant av MVC. Det var utformat speciellt för testautomatisering där målet var att öka mängden kod som kan testas genom automatisering, och mönstret hanterar vissa problem med presentationsskiktet, isolerar affärslogik från gränssnittet.
Skärmen är vyn, de data som visas är modellen, och presentatören hakar de två tillsammans.
MVP består av följande komponenter med separat ansvar:
De Se (en webbsida) visar och hanterar sidkontrollerna genom att vidarebefordra händelser (användarförfrågningar) till Presentatör som initierades i Se.
De Presentatör svarar på dessa händelser genom att läsa och uppdatera Modell att ändra Se och därför presentatörens ansvaret är att binda Modell och Se.
Efter att ha tittat på MVC och MVP mönster, gemensamheten har båda separata ansvarsområden för varje komponent och de främjar separation mellan Se (Användargränssnitt) och Modell (data). Betydande skillnader mellan dessa mönster är tydligare i hur mönstren implementeras.
MVP kan vara ett komplext mönster att implementera för avancerade lösningar men har säkert stora fördelar om den implementeras som en väl utformad lösning, men det kan inte nödvändigtvis vara ett lämpligt val för enkla lösningar.
MVVM Mönster
De MVVM mönster var speciellt utformad för Windows Presentation Foundation (WPF) och Microsoft Silverlight-plattformar, och det kan användas på alla XAML [i] plattformar.
WPF är ett Microsoft-system som gör användargränssnitt i Windows-baserade program och släpptes för första gången i .NET Framework 3.0.
MVVM raffinerades från MVC och i det här mönstret Se är aktiv med beteenden, händelser och databindningar, och Se synkroniseras med Viewmodel (som möjliggör separation av presentationen och exponerar metoder och kommandon för att hantera och manipulera Modell.
MVVM består av tre kärnkomponenter:
De Se tar emot data från Viewmodel (genom databindande och metoder), och vid körning, den Se kommer att ändras när du svarar på händelser i Viewmodel.
De Viewmodel förmedlar mellan Se och Modell och hanterar Se logik. Det interagerar med Modell - tar data från Modell och presentera den för Se att visa.
Dessa komponenter är alla frikopplade från varandra vilket möjliggör större flexibilitet att arbeta med dem oberoende, isolera testning av enheter och byta ut dem utan att påverka någon annan komponent.
Denna struktur tillåter Modell och andra komponenter utvecklas självständigt, så att utvecklare kan arbeta på olika aspekter av lösningen samtidigt. Till exempel, där designers arbetar på Se, de genererar helt enkelt dataprover utan att behöva komma åt de andra komponenterna. Detta underlättar enkel omformning av användargränssnittet som Se implementeras i XAML.
Som tidigare nämnts med MVP, enkla lösningar skulle inte behöva arkitektur och designmönster, som "Hello World!" är för grundläggande för att följa något mönster; Men eftersom fler funktioner, funktioner och komponenter introduceras ökar applikationens komplexitet och även mängden kod som måste hanteras.
Sedan starten av användargränssnittet utvecklas designmönster alltmer populärt för att underlätta utvecklingsprocessen, applikationerna är skalbara och det underlättar testningen.
Illustrerad skillnad mellan MVP och MVVM-mönster: