objectgeoriënteerde ontwerppatronen uitgelegd aan de hand van praktijkvoorbeelden

0 Comments

gedragspatronen

Dit type patroon heeft betrekking op de communicatie tussen objecten. In de meeste gevallen worden de afhankelijkheden tussen communicerende objecten verminderd door deze patronen wat leidt tot een beter softwareontwerp.

Chain of Responsibility

Dit patroon creëert een keten van ontvanger-objecten voor een verzoek. Het vermijdt het koppelen van de afzender van een verzoek aan de ontvanger en geeft meerdere objecten de kans om het verzoek af te handelen. Ontvangende objecten zijn met elkaar verbonden., In het voorbeeld hieronder wordt een keten van middleware eenheden geconstrueerd. Het verzoek, met e-mail en wachtwoord, wordt doorgestuurd in de keten. Nieuwe elementen in de ketting kunnen eenvoudig worden toegevoegd.

Command

In het opdrachtpatroon wordt een object gebruikt om alle informatie te verzamelen die nodig is om een actie uit te voeren of een gebeurtenis op een later tijdstip te activeren. Zoals hieronder wordt getoond, definieert de ActionOpen zowel de actie als het object waarop de actie wordt uitgevoerd., Meer informatie is niet nodig en een ander object, hier menu, kan de actie uitvoeren.

Interpreter

Het Interpreterpatroon definieert een representatie voor de grammatica van een taal en biedt de mogelijkheid om zinnen van die taal te interpreteren. In het codefragment hieronder kan een Plus-object “operand1 + operand2” interpreteren en weet hij wat hij met die uitdrukking moet doen. Meer tolken kunnen worden toegevoegd zonder de structuur te veel te veranderen. De Parser gebruikt vervolgens tolken om input te begrijpen.,

Iterator

de Iterator wordt gebruikt om een container met gegevens te doorkruisen om toegang te krijgen tot de elementen van de container zonder de onderliggende structuur te hoeven kennen. Ook kunnen nieuwe traversale varianten worden toegevoegd zonder de interface van de objecten of de gegevensstructuur zelf te veranderen.
De ChannelSurfer, hieronder afgebeeld, kan op opeenvolgende wijze toegang krijgen tot kanalen. Het RemoteControl-object hoeft zich geen zorgen te maken over de organisatie van de kanalen. Een RandomChannelSurfer, bijvoorbeeld, kan zonder veel problemen worden toegevoegd.,

Mediator

als twee of meer objecten moeten samenwerken, kan het Mediatorpatroon worden toegepast. Vooral als de objecten elkaar niet kennen, als ze niet strak gekoppeld moeten zijn, of hun interactie complex is, kan dit patroon helpen.
in het voorbeeld hieronder is er enige interactie nodig tussen UI-elementen. Deze interactie vindt plaats via de Authenticatiedialog als Mediator. Op deze manier wordt de interactie niet gedefinieerd in een van de deelnemende objecten, maar geëxtraheerd in de mediator.,

Memento

het Memento-patroon is nuttig als een bepaalde toestand van een object moet worden opgeslagen voor later gebruik. Daarbij schendt het niet de inkapseling van de implementatiedetails van dat object. Het kan bijvoorbeeld worden gebruikt voor de implementatie van een undo-mechanisme.

waarnemer

in het observer pattern observer objects abonneer u op een waarneembaar object dat moet worden gemeld telkens wanneer de waarneembare zijn gegevens wijzigt., Waarnemers zijn losjes gekoppeld en kunnen tijdens het draaien worden toegevoegd en verwijderd.
met betrekking tot hoe de waarnemer uiteindelijk de gegevens van de waarneembare krijgt, zijn er twee varianten: push en pull. De code hieronder toont de pull variant, die flexibeler is omdat in dit geval de waarneembare niet hoeft te weten hoe de waarnemer de gegevens wil ontvangen, maar de waarnemer kan de gegevens ophalen zoals gewenst.

Status

Het Toestandspatroon laat een object zijn gedrag wijzigen wanneer zijn interne toestand verandert., Dit patroon is vergelijkbaar met het strategiepatroon, maar in dit geval wordt intern beslist hoe de objecten zich gedragen. Dit is vooral handig als complexe condities bepalen hoe het object zich moet gedragen. Nieuwe staten kunnen onafhankelijk van bestaande staten worden toegevoegd.

strategie

In het kader van het Strategiepatroon bestaan er meerdere varianten voor één algoritme waarbij één variant wordt gekozen om tijdens runtime te worden uitgevoerd.,
in het voorbeeld hieronder kan een Compressorobject worden gebruikt met een van de twee verschillende algoritmen die tijdens het draaien zijn gedefinieerd. De methode die de actie uitvoert (createArchive) past vervolgens het gekozen algoritme toe.

sjabloon

Het Sjabloonpatroon definieert een structuur voor subklassen waarin stappen van een algoritme en hun volgorde worden gedefinieerd. Dit zorgt ervoor dat de subklassen exact dezelfde stappen volgen, wat zorgt voor een beter overzicht en consistentie., Het maakt het ook mogelijk om standaard implementaties te definiëren voor stappen die kunnen worden overschreven door subklassen.
zoals hieronder getoond volgen alle parsers die van DataParser overerven exact dezelfde stappen als parse () wordt uitgevoerd. Dit zorgt er bijvoorbeeld voor dat alle parsers de bestanden sluiten en de status registreren.

bezoeker

Het Bezoekerspatroon maakt het mogelijk om een of meer bewerkingen toe te passen op een set objecten tijdens het draaien zonder dat de bewerkingen nauw verbonden zijn met de objectstructuur.,
Hiermee kunt u double dispatch implementeren waarbij een functie aanroep naar verschillende concrete functies afhankelijk is van het runtime type van twee objecten. In het onderstaande voorbeeld zijn er aan de ene kant route-elementen en aan de andere kant bezoekersobjecten die elk verschillende functies uitvoeren op de route-elementen. Als er in de toekomst meer bezoekers worden toegevoegd, hoeft het routeelement niet te veranderen.


Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *