Soorten Creatiepatronen



Dovnload 38.64 Kb.
Datum20.08.2016
Grootte38.64 Kb.
soorten

Creatiepatronen hebben te maken met het proces van creeren van objecten

Structuurpatronen hebben te maken met de samenstelling van klassen of objecten


Structuurpatronen
Gedragpatronen karakteriseren de manier waarop klassen of objecten met elkaar samenwerken en hoe ze de verantwoordelijkheid verdelen

Klassenpatronen hebben te maken met relaties tussen klassen en hun subklassen. (via overerving, statisch want tijdens compileren vastgelegd)
Objectpatronen hebben te maken met relaties tussen objecten. (dynamisch want kunnen at run time worden gewijzigd)

Afspraak notatie
Klasse die instanties van objecten van een andere klasse maakt

Nieuwe klassen kunnen van bestaande klassen worden gedefinieerd met overerving van klassen





Abstracte klassen en bewerkingen  cursief
pseudocode , voor de implementatie van een bewerking.



Delegeren

Een klasse kan een verwijzing bijhouden naar een instantie van een andere klasse,

Bvb Een venster heeft een rechthoek, ipv dat een venster een rechthoek is !!


creatiepatronen – builder patern
Constructie van een ingewikkeld object van zijn weergave scheiden zodat hetzelfde constructieproces op verschillende representaties kan worden toegepast.
Toepasbaarheid
Als het algoritme voor het creëren van een ingewikkeld object onafhankelijk moet zijn van de delen waaruit het object bestaat en van hoe deze worden samengevoegd
Als het constructieproces verschillende weergaven moet toestaan voor het object dat wordt geconstrueerd. (bvb RTF-probleem)
Structuur



Vb
RTF-lezer voor het uitwisselen van documenten moet in staat zijn RTF in vele tekstindelingen te converteren. (bvb in ASCII, of interactieve widget). Het moet makkelijk zijn om nieuwe conversies te kunnen toevoegen zonder de lezer te wijzigen.
Oplossing : Het algoritme voor het interpreteren van een tekstindeling (parsing van het RTF-document) scheiden van hoe de geconverteerde indeling wordt gemaakt en getoond.
Het creëren van een ASCII text document op basis van een RTF document gebeurt door het parsen van het RTF document (stap 1, constructie) en vervolgens het converteren naar een ASCII text. (stap 2, representatie).
Door de verantwoordelijkheid van de conversie te verschuiven naar een ander object, de Builder, kunnen we dezelfde parser gebruiken voor verschillende builders (die andere typen documenten genereren).



creatiepatronen – singleton patern
“verzekeren dat een class maar één object heeft en voorzien in een globale referentie naar dat object”.
Implementatie
Voeg een private static lid van de class toe dat refereert aan het gewenste object (wordt op NULL geïnitialiseerd).
Voeg een public static methode toe die deze class instantieert als dit lid NULL is, dit lid aan de nieuwe instantie laat refereren, en de waarde van het lid teruggeeft.
Zet de status van de constructor op private of protected om te voorkomen dat iemand om de static instantiatie-methode heen kan.
structuur

Clients krijgen uitsluitend via de bewerking getInstance van de Singleton Class toegang tot een instantie van de singleton

structuurpatronen – adapter patern
Doel
Als u een bestaande klasse wilt gebruiken en de interface daarvan niet overeenkomt met die welke u nodig heeft

Adapter laat classen samenwerken die dat anders niet konden omdat hun interfaces incompatibel zijn.


Intentie
Match een bestaand object aan een speciale interface.
Implementatie
Neem de bestaande class op in een andere class. Laat de bevattende class het vereiste interface matchen en roep de methoden van de bevatte class aan.
Structuur
Voor objecten :



object aan een speciaal

voor klassen :





Vb

Nu wil ik een vorm Circle toevoegen en ontdek dat er al een class XXCircle bestaat.


Helaas heten de methoden verkeerd en hebben ze verkeerde parameters.
Gelukkig kan ik het Adapter pattern gebruiken:
Ik implementeer Circle door XXCircle te gebruiken


structuurpatronen – facade patern
Doel
Facade definieert een hoger-niveau interface dat het eenvoudiger maakt om het subsysteem te gebruiken.
Je hebt maar een deel van een complex systeem nodig of je wilt op een speciale manier met het systeem communiceren
Als u een subsysteem in lagen wilt opbouwen. Gebruik een facade om een toegangspunt naar elke laag van het subsysteem te definiëren.
Implementatie
Definieer een nieuwe class (of classen) met het vereiste interface Laat deze class het bestaande systeem gebruiken.
Structuur


Variatie
Een Client-object heeft te maken met Databases, Models en Elementen. De Client moet eerst de Database openen en een Model krijgen. Daarna moet deze het Model ondervragen om een Element te krijgen. Tenslotte wordt het Element om informatie gevraagd.



structuurpatronen – composite patern
doel
Het tot boomstructuren samenvoegen van objecten om gedeeltelijke/volledige hierarchiën te presenteren.

U clients in staat wil stellen het verschil tussen individuele objecten en samengestelde objecten te negeren. Clients zullen alle objecten in de samengestelde structuur op dezelfde manier behandelen.



Structuur

De abstracte klasse Component

beschrijft de interface die enkelvoudige en samengestelde objecten gemeen hebben.



De klasse Leaf

definieert de structuur en het gedrag van de enkelvoudige objecten.



Objecten van de klasse Composite

bevatten kinderen, die zelf weer instanties van Component zijn. Op deze manier kan een willekeurige hiërarchie van objecten worden gemaakt, waarbij de samenstelling als geheel op dezelfde manier behandeld kan worden als elk van de onderdelen.



Voorbeeld
- Het te ontwerpen systeem is bedoeld voor de verwerking van arrangementen binnen een klein reisbureau.

- Het reisbureau biedt klanten verschillende arrangementen (bijvoorbeeld een stedenreis) aan. Elk van deze arrangementen die het reisbureau aanbiedt, kunnen zelf weer bestaan uit ‘kleinere’ arrangementen.

- Zo kan een stedenreis bijvoorbeeld bestaan uit een hotel-arrangement en een wandeltocht-arrangement.

- Alle arrangementen hebben een prijs. De prijs van een samengesteld arrangement wordt gedefinieerd als de som van prijzen van de onderdelen.




structuurpatronen – bridge patern
Doel
“Een abstractie te ontkoppelen van zijn implementatie, zodat beide onafhankelijk kunnen variëren”.
Gewoonlijk wordt er overerving gebruikt om de abstractie te implementeren. De abstracte klasse definieert dan de interface en concrete subklassen implementeren die. Deze methode is echter niet zo flexiebel.

Overerving koppelt een implementatie permanent aan de abstractie, waardoor het moeilijk wordt abstracties en implementaties onafhankelijk van elkaar te wijzigen, uit te breiden en te hergebruiken.


Oplossing : Definieer een interface dat alle implementaties gebruiken en laat de afgeleiden van de abstracte class dat gebruiken.
Gebruiken als de abstracties en hun implementaties beide moeten kunnen worden uitgebreid door er subklassen van te maken.
Structuur



gedragspatronen – observer patern
doel
Een 1 op n (1 op veel) afhankelijkheid tussen objecten te definiëren, zodat wanneer het ene object van toestand verandert, alle objecten die daarvan afhankelijk zijn automatisch hiervan op de hoogte worden gebracht en worden bijgewerkt.
« Het ontkoppelen van objecten, zodat wijzigingen in de toestand van 1 object van invloed kunnen zijn op een willekeurig aantal andere objecten »
« Het gewijzigde object moet de details van de andere objecten niet kennen  »
Structuur


ConcreteSubject waarschuwt zijn observers telkens als er een wijziging optreedt die er toe zou kunnen leiden dat de status van zijn observers niet meer met zijn eigen status overeen zou komen.
Een ConcreteObserver-object kan het subject om informatie vragen nadat het over een wijziging in het ConcreteSubject is geïnformeerd.
ConcreteObserver gebruikt die informatie om zijn status in overeenstemming te brengen met die van het subject.
Observers zijn dus verantwoordelijk voor zowel de aanmelding bij het Subject als om de informatie op te halen bij het Subject wanneer zij een seintje gekregen hebben.
Vb
Een bedrijf maakt in enkele van zijn applicaties gebruik van een klok . Het uitzicht van deze klok kan verschillen.

Het is wel zo dat in elke applicatie de tijd die de klok aangeeft gelijk zou moeten zijn.

In elk van de applicaties kan de klok gewijzigd worden. Deze wijzigingen moeten in de andere applicaties ook worden doorgevoerd.



Model view controller
Wordt gebruikt om gebruikersinterfaces te bouwen
Model is het toepassingsobject, View is de schermweergave en de Controller definieert hoe de interface op invoer van de gebruiker reageert
Als de gegevens van het model veranderen meldt het model dit aan de afhankelijke weergaven. Zo is het mogelijk meerdere weergaven aan een model te koppelen om verschillende presentaties te bieden
Maakt het ook mogelijk de manier waarop men op invoer reageert te veranderen zonder de visuele representatie te moeten veranderen.

Het reactiemechanisme zit in het controller-object. Enkel dit wordt dus gewijzigd







anti paterns
Antipatterns beschrijven veelgemaakte fouten bij het ontwerpen van systemen en hoe dat deze fouten kunnen worden voorkomen door gebruik te maken van “refactoring solutions” (betere oplossing).
Antipatterns zijn negatieve oplossingen voor een probleem , door AntiPatterns te begrijpen zal je in staat zijn om de “slechte” oplossingen in te kunnen zien.
Categoriën
Development AntiPatterns

technische problemen/oplossingen waarmee programmeurs te maken krijgen



Architectural AntiPatterns

identificatie van veel voorkomende problemen in systeemstructuren



Managerial AntiPatterns

Beschrijven veel voorkomende problemen in software processen en development organisaties



De database wordt beschermd door het auteursrecht ©opleid.info 2017
stuur bericht

    Hoofdpagina