MVC, MVP, MVVM: welke te kiezen?

MVC, MVP, MVVM: welke te kiezen?

Moderne applicaties hebben zo'n verscheidenheid aan functies nodig dat het ontwikkelingsproces in omvang en complexiteit is gegroeid. Om te helpen, kunt u een architectonisch ontwerppatroon gebruiken. Ze ondersteunen het bouwen van applicaties die eenvoudig te testen en te onderhouden zijn.





De drie meest populaire ontwerppatronen zijn MVC, MVP en MVVM. De MVC staat voor model, view en controller, terwijl MVP staat voor model, view en presenter en MVVM voor model, view en view model.





Architecturale en ontwerppatronen

architectonisch patroon

Een architectonisch patroon verduidelijkt en definieert enkele cruciale componenten van een software-architectuur. Ook al geeft een architectonisch patroon een beeld van een systeem, het is geen architectuur . In feite is het een algemene en herbruikbare oplossing voor een veelvoorkomend probleem in software-architectuur in een bepaalde context.





Ontwerp patroon

Een ontwerppatroon is een geformaliseerde best practice die u kunt gebruiken om veelvoorkomende problemen op te lossen bij het ontwerpen van een toepassing of systeem.

Het verschil tussen architectonisch en ontwerppatroon

Laten we beginnen met de algemene term: patroon. In software is een patroon een terugkerende eigenschap waarmee je een enorme en complexe structuur kunt opsplitsen in kleinere, eenvoudigere componenten. U kunt dit patroon gebruiken om een ​​algemene oplossing voor een klasse problemen te bedenken.



Op elk niveau van softwareontwikkeling gebruik je verschillende tools. Op kleinere niveaus zijn deze tools ontwerppatronen. Architecturale patronen bestaan ​​op grotere niveaus, en programmeer paradigma's op uitvoeringsniveau.

Waarom hebben we architecturale ontwerppatronen nodig?

Tijdens softwareontwikkeling kunt u architecturale ontwerppatronen gebruiken om veelvoorkomende problemen op te lossen. Goede architectuur kan u ook helpen om:





  • Splits complexe taken op in eenvoudigere taken.
  • Verminder fouten.
  • Produceer testbare en onderhoudbare code.

Maar zonder een architectonisch patroon kunt u problemen ondervinden bij het onderhouden van de bedrijfslogica van uw app.

Model, weergave, weergavemodel, controller en presentator

Voordat je naar elk patroon kijkt, zijn hier de termen waaruit ze bestaan:





  • Model slaat gegevens op en communiceert rechtstreeks met de database. Model is het deel dat uw gegevens en toepassingslogica vertegenwoordigt. Het definieert de bedrijfsregels die de verwerking, wijziging of verwerking van gegevens beheren.
  • Visie geeft de gegevens van het model weer en is verantwoordelijk voor de weergave van de gegevens in de gebruikersinterface.
  • BekijkModel is exclusief voor het MVVM-patroon. Dit is een abstractie van de weergavelaag en fungeert ook als een wrapper voor de modelgegevens.
  • Controller is het onderdeel dat de weergave en het model integreert.
  • Presentator is een component die alleen in het MVP-model bestaat. Presenter haalt de input uit de viewcomponent en verwerkt de data met behulp van het model.

MVC-, MVP- en MVVM-patronen

Model-View-Controller-patroon

De MVC architectonisch patroon was de eerste en is tegenwoordig populair op het gebied van webapplicaties. Het werd geïntroduceerd in de jaren 70. Met dit patroon kun je een applicatie bouwen rond Separation of Concerns (SoC). Het vereenvoudigt de inspanning die u nodig hebt om uw toepassing te testen, te onderhouden en te ontwikkelen.

In het MVC-patroon heeft het model geen begrip van de weergave of de controller. De waarnemer van het model ontvangt een waarschuwing wanneer er een wijziging is in de weergave en controller. De controller helpt het routeringsproces om het model te koppelen aan de relevante weergave.

Enkele voordelen van het MVC-patroon zijn:

  • Scheiding van zorgen (meer gericht).
  • Vergemakkelijkt het testen en beheren van de code.
  • Bevordert de ontkoppeling van de applicatielagen.
  • Betere code-organisatie en herbruikbaarheid.

Zo werkt MVC:

kun je ram van verschillende grootte gebruiken?
  Afbeelding van een diagram dat illustreert hoe MVC werkt

Dankzij de SoC kan MVC de codegrootte verkleinen en een goede code maken die schoon en beheersbaar is.

Model-weergave-presentatorpatroon

Het MVP-patroon deelt twee componenten met MVC: model en weergave. Het vervangt de controller door de presentator. De presentator - zoals de naam al aangeeft - wordt gebruikt om iets te presenteren. Hiermee kunt u het uitzicht gemakkelijker bespotten.

In MVP heeft de presentator de functionaliteit van de 'middle-man' omdat alle presentatielogica ernaar wordt gepusht. De weergave en presentator in MVP zijn ook onafhankelijk van elkaar en communiceren via een interface.

Hier is een illustratie van hoe het MVP-patroon werkt:

  Afbeelding van een diagram dat illustreert hoe MVP werkt

Via de view krijgt de presentator input van de gebruiker. Het verwerkt vervolgens de acties van de gebruiker met behulp van het model en geeft de resultaten terug aan de weergave. De presentator communiceert met de weergave via interfaces.

Model-View-ViewModelpatroon

MVVM is de moderne evolutie van MVC. Het belangrijkste doel van MVVM is om een ​​duidelijke scheiding aan te brengen tussen de domeinlogica en de presentatielaag. MVVM ondersteunt bidirectionele databinding tussen de view en viewmodel.

Met het MVVM-patroon kunt u de weergave en het model van uw code scheiden. Dit betekent dat wanneer het model verandert, de weergave niet hoeft, en vice versa. Met behulp van een viewmodel kunt u unit-testen doen en uw logisch gedrag testen zonder uw mening te betrekken.

Hier is een illustratie van hoe MVVM werkt:

  Afbeelding van een diagram dat illustreert hoe MVVM werkt

Wanneer MVC, MVP en MVVM gebruiken?

Nu u over elk patroon hebt geleerd, moet u weten wanneer u ze moet gebruiken.

Wanneer MVC gebruiken?

MVC is gewoon een implementatie van Separation of Concerns. Als uw toepassing de gegevens (model), de gegevensverwerking (controller) en de gegevenspresentatie (weergave) moet scheiden, zal MVC goed werken. MVC komt ook goed van pas in een applicatie waar de databron en/of de datapresentatie op elk moment kan veranderen.

Wanneer MVP gebruiken?

U kunt MVP gebruiken wanneer uw toepassing een bidirectionele stroom heeft. Als gebruikersinteracties iets van het model moeten vragen en het resultaat van dit verzoek zal de gebruikersinterface onmiddellijk veranderen, overweeg dan MVP.

Wanneer MVVM gebruiken?

U wilt MVVM gebruiken wanneer:

  • U moet een project delen met een ontwerper en het ontwerp- en ontwikkelingswerk kan onafhankelijk gebeuren.
  • U heeft unit-testing nodig voor uw oplossingen.
  • U moet over herbruikbare componenten beschikken, zowel binnen als tussen projecten in uw organisatie.
  • U wilt meer flexibiliteit om uw weergaven te wijzigen zonder dat u andere logica in de codebasis hoeft te refactoren.

Welk patroon moet je kiezen?

De belangrijkste reden om een ​​ontwerppatroon te gebruiken is om de complexiteit te verminderen. U kunt dit doen door de algehele complexiteit te verminderen of door onbekende complexiteit te vervangen door het bekende. Als een ontwerppatroon de complexiteit op geen van beide manieren kan verminderen, gebruik het dan niet; het zal geen enkele waarde toevoegen.

Als je echt zeker weet dat je een ontwerppatroon moet gebruiken, probeer dan een checklist te maken. Baseer het op de situaties die u hier hebt gezien en kies de beste pasvorm voor uw project.