Ontwerppatronen maken de code van uw app modulair en vergevingsgezind als het gaat om het oplossen van bugs en wijzigingen. In dit artikel leert u over de ontwerppatronen MVC (Model-View-Controller) en MVVM (Model-View-ViewModel).
Hoewel ontwerppatronen (ook bekend als architecturale patronen) essentieel zijn voor de ontwikkeling van schaalbare Cocoa Touch-apps, is er veel controverse rond welk architecturaal patroon eigenlijk het beste is voor gebruik in uw app.
Bekijk deze recente berichten van Bart Jacobs over MVC en MVVM voor meer perspectieven op deze ontwerppatronen en de keuze tussen deze patronen.
De verzameling objecten van een bepaald [architectonisch patroon] in een toepassing wordt soms een laag genoemd, bijvoorbeeld een modellaag. - Appel
Laten we zonder meer een paar ontwerppatronen bekijken die u in uw volgende app kunt gebruiken.
Dit is het meest gebruikte patroon in Cocoa Touch-ontwikkeling, en het is ook mijn persoonlijke favoriet. Dit ontwerppatroon sorteert uw code efficiënt en effectief in drie categorieën (of lagen): het model, de weergave en de controller.
Met dit ontwerppatroon kunt u wijzigingen aanbrengen in één laag zonder de andere lagen van het patroon te beïnvloeden. Als u bijvoorbeeld de database moet wijzigen, verwijdert u het model en vervangt u het zonder de weergave of controller te hoeven bewerken. Of als u de weergave van een weergave wilt wijzigen, hoeft u zich geen zorgen te maken over het verpesten van de databasecode. Dit wordt 'separation of concerns' genoemd en het maakt uw code eenvoudiger te debuggen, te onderhouden en opnieuw te gebruiken.
Bovendien is dit het ontwerppatroon dat door Apple zelf wordt aanbevolen, en het is een norm in de ontwikkelingsgemeenschap van iOS. Als je net begint, raad ik je ten zeerste aan om gewoon aan dit patroon te blijven. Je kunt verschillende ontwerppatronen later in je Cocoa ontwikkelingscarrière uitproberen.
Laten we de verschillende lagen in dit patroon van naderbij bekijken en bekijken waar ze verantwoordelijk voor zijn. Hier is een snel diagram van de interacties tussen de lagen:
Het MVC-ontwerppatroon scheidt elk deel van uw code in een van de drie delen: het model, de weergave en de controller.
Eén ding om in gedachten te houden is dat je niet teveel verantwoordelijkheden in een van deze lagen moet proppen, want dat zou het doel van het hebben van een ontwerppatroon verslaan.!
En als je de verbindingen tussen de lagen niet schoon en helder houdt, krijg je uiteindelijk een rommelige en niet-verdedigbare app, ondanks het gebruik van het MVC-ontwerppatroon! Zorg in het bijzonder ervoor dat je niet doen laat het zicht en het model direct communiceren. Deze interacties moeten uitsluitend via de controller plaatsvinden.
Hoewel het ontwerppatroon van Model-View-Controller vrij normaal is en in de meeste gevallen zou moeten werken, heeft het zijn eigen reeks uitdagingen en nadelen. Daarom hebben we een ander ontwerppatroon genaamd MVVM, wat staat voor Model-View-ViewModel.
Welnu, er is een groot probleem waar je je bewust van moet zijn. Zoals je in het vorige gedeelte hebt gezien, is de Controller-laag de enige laag tussen de weergave en het model, dus het is niet verwonderlijk dat mensen deze laag misbruiken en er snel teveel dingen aan doen. Dit lijkt misschien het gemakkelijkste om te doen op het moment, omdat het de andere lagen vermijdt, maar uiteindelijk leidt het tot een opgeblazen Controller en moeilijk te onderhouden code.
Dit heeft ertoe geleid dat MVC in sommige kringen de grillige bijnaam "Massive-View-Controller" kreeg.
Het MVVM-architecturale patroon, dat werd geleend door Cocoa-ontwikkelaars van Microsoft, kan dit probleem van enorme view controllers helpen bestrijden. Hoewel het niet zo gebruikelijk is in iOS-ontwikkeling als MVC, wordt het in toenemende mate gebruikt om de tekortkomingen van MVC goed te maken..
Laten we eens kijken naar de verschillende lagen en hun verantwoordelijkheden in MVVM. (U moet waarschijnlijk opmerken dat er in de Cocoa-community geen formele richtlijnen zijn over het gebruik van deze lagen.)
Hier is een snel diagram dat de lagen van dit architecturale patroon en hun verbindingen met elkaar laat zien.
Als je erover nadenkt, zie je dat hoewel views en controllers afzonderlijke lagen zijn in het MVC-ontwerppatroon, ze zeer nauw met elkaar zijn verbonden. Dus in MVVM nemen we eenvoudig de weergave en de controller en combineren ze tot één laag.
Laten we elke laag vergelijken met zijn tegenhanger in het MVC-patroon.
Zoals je eerder hebt gezien, moet je de verantwoordelijkheden van deze lagen niet mengen, omdat dit ertoe kan leiden dat je app-code een ingewikkelde spiraal vormt, waardoor het gebruik van elk ontwerppatroon overbodig wordt.
Ik hoop dat je het leuk vond om meer te leren over deze fundamentele ontwerppatronen voor iOS. Hopelijk heb je meer inzicht gekregen in de MVC- en MVVM-ontwerppatronen en heb je voldoende vertrouwen om deze te gebruiken in je toekomstige toepassingen.
Natuurlijk is het architecturale patroon dat u voor uw app gebruikt helemaal aan u, en het hangt af van het type toepassing dat u probeert te ontwikkelen. Als u echter nog niet bekend bent met iOS-ontwikkeling, raad ik u toch ten zeerste aan om het MVC-ontwerppatroon te volgen, omdat dit nog steeds de meest gangbare methode is in de ontwikkeling van Cocoa..
Als je er nog bent, kijk dan eens naar enkele van onze andere tutorials en artikelen hier op Envato Tuts+!