Behavorial Patterns Flashcards
Strategy pattern
Familie van algoritmen, isoleren & uitwisselbaar maken door interfaces en compositie
Template pattern + hooks
Skelet van een algoritme in de superklasse definieert, maar subklassen toestaat specifieke stappen te overschrijven. Template methoden zijn final en kunnen niet gewijzigd worden.
Hook:
een hook is een stap in het algoritme waar een subklasse de optie heeft om die te overriden. Als dat niet gebeurt, heeft de basisklasse een defaultimplementatie (die kan ook leeg zijn).
Memento pattern + twee interfaces?
Huidige toestand van een object opslaan zodat die kan herstelt worden.
Originator: object waarvan toestand opgeslagen en hersteld moet worden.
Caretaker: toestand van de originator willen bijhouden en kunnen terugzetten
Memento: object dat toestand van originator bijhoudt
De Caretaker mag de inhoud van een Memento niet veranderen! Daarom moet de Memento eigenlijk twee interfaces hebben: een ‘smalle’ voor de Caretaker, en een ‘brede’ voor de Originator.
Iterator pattern + intern & extern
Object dat verantwoordelijk is om de verzameling elementen te overlopen. Zo koppelen we client los van de concrete implementatie
Externe: de iterator zorgt voor het opschuiven
interne:de client is verantwoordelijk voor het opschuiven
Command pattern & undo?
Verandert een verzoek in een zelfstandig object dat alle verzoeken bevat.
Command interface: een methode Undo() toevoegen
ConcreteCommand: een methode Undo() toevoegen
Invoker: attributen voorzien voor de Undo-commando’s
Chain Responsability pattern + onderdelen
Verzoeken doorsturen langs een keten van handlers. Bij ontvangst van een request beslist elke afhandelaar of hij het request verwerkt of doorgeeft aan de volgende afhandelaar in de keten.
Client: stuurt het verzoek, naar een abstracte Handler.
Handler: interface die de Client en concrete handlers van elkaar loskoppelt. Elke Handler heeft een verwijzing naar een opvolger.
ConcreteHandler: een concrete implementatie van een Handler
Observer pattern, push-pull-model?
Objecten kunnen zich abonneren op berichten van een ander object.
subject:
het object dat berichten stuurt (de ‘uitgever’)
observer:
een object dat de berichten van het subject ontvangt (de ‘abonnee’) Observers kunnen zich op elk moment abonneren, of hun abonnement weer opzeggen.
Push-model: verpak de door te geven data in een object Observable: notifyObservers(data) Observer: update(Observable o, Object data)
Pull-model:
omgekeerd push-model
Oberver gaat data opvragen bij Observable