Zoek

Uitgebreid zoeken Artikelen per auteur

  

Actief-passief design pattern

Actief-passief design pattern
Komt een waterkoker bij het fornuis…

Inleiding

Dankzij de kracht van object-georiënteerde programmeertalen zijn we als ontwikkelaars in staat een executeerbaar model te definiëren. Dit doen we door objectdefinities te maken, details te encapsuleren en gedrag te abstraheren door middel van polymorfisme. Object-oriëntatie als krachtig gereedschap wordt vaak ingezet om een model te maken van de werkelijkheid en deze in te zetten als onderdeel van de software. Eén van de problemen die vaak optreed is dat er onnodig complexe objecten ontstaan met veel verantwoordelijkheden en relaties tot andere objecten. Door het toepassen van het actief-passief design pattern kan men deze complexiteit reduceren.

Het patroon

In objectmodellering is actief-passief een patroon dat als volgt samengevat kan worden: Alle actieve objecten in de echte wereld worden passief in het model. Voor passieve objecten geldt het tegenovergestelde, deze worden juist actief.

Intentie

Zelfs als we meerdere modellen gebruiken kunnen modellen onnodig complex worden. Een veelgemaakte fout is dat we een model maken dat een te strakke afspiegeling is van de echte wereld. Dit is verklaarbaar omdat onze hersenen die wereld goed kennen en we ons hierin thuisvoelen. Om dit te voorkomen passen we het actief-passief-patroon toe. Met behulp van dit patroon kunnen we een eenvoudige vertaling maken van de echte wereld naar een model.
Voorbeeld

Hieronder zijn twee scenario’s beschreven. Beide beschrijven hoe Geertje thee zet. Het eerste verhaal speelt zich af in de echte wereld, terwijl het tweede zich afspeelt in het model.
In de echte wereld 

Figuur 1: afhankelijkheden tussen objecten in de werkelijke wereld

Geertje wil graag een kopje thee drinken. Ze staat op van haar stoel en loopt naar de keuken. In de keuken pakt ze een theekop, waarna ze de theepot pakt en erachter komt dat deze helemaal leeg is. Dat betekent dat ze eerst nog thee moet zetten. Ze gebruikt de kraan om de ketel te vullen met water. Niet te vol natuurlijk, want dan kookt het water straks over. Geertje zet de ketel met water op het fornuis en wacht tot het water kookt. Daarna vult ze de theepot met het hete water uit de ketel en hangt er een theezakje in. Zodra de thee donker genoeg is verwijdert ze het theezakje en schenkt haar kop vol met thee.
In het model

 


Figuur 2: Afhankelijkheden tussen objecten in het model

Geertje wil graag een kopje thee drinken. Ze vertelt tegen een theekop dat ze graag thee wil. De kop gaat naar de theepot en vraagt of ze hem vol wilt schenken. De theepot komt er achter dat ze geen thee meer heeft en vraagt de ketel om wat water te koken. Genoeg om zichzelf helemaal mee te vullen. De ketel loopt naar de waterkraan en vraagt deze om hem te vullen. Nadat de ketel gevuld is loopt hij naar het fornuis en vraagt aan het fornuis of hij zijn pit wilt ontsteken. Zodra het vuur brand springt de ketel op de pit en wacht hij tot het water kookt. Daarna loopt hij terug naar de theepot om hem vervolgens vol te gieten met water. De theepot loopt terug naar de kop en vraagt aan een theezakje om in het water te springen en er niet uit te komen voordat de thee goed is. Het theezakje springt erin en wacht twee minuten voordat hij er weer uitkomt. Hierna is de thee klaar en schenkt de theepot het kopje vol met thee, waarna het theekopje terugloopt naar Geertje.

Afhankelijkheden

Figuur 1 en 2 geven de afhankelijkheden van objecten weer voor beide verhalen. Merk op dat in de echte wereld Geertje alle andere objecten inclusief het hele proces moet kennen, terwijl in het model de objecten slechts een paar afhankelijkheden hebben.
In plaats van afhankelijk te zijn van een complex object, is Geertje dit nu alleen van de theekop. De theekop hangt af van de theepot. De theepot op zijn beurt weer van de kraan en het gasfornuis, en zo verder. Alle objecten werken samen om een doel te verwezenlijken.
Het resultaat
Als het actief-passief-patroon goed wordt toegepast volgt er een model waarin verschillende objecten met elkaar samenwerken om een doel te verwezenlijken, waarbij menselijke actoren nauwelijks een rol spelen.
De verdeling van de complexiteit in het resulterende model is zoveel mogelijk evenredig verdeeld. Het model bevat kleinere simpele objecten met slechts een aantal afhankelijkheden. De objecten hebben hun eigen verantwoordelijkheden en gebruiken vooral anderen om hun doel te bereiken. Het is te vergelijken met een mierenkolonie. Het aantal objecten zal stijgen, terwijl de complexiteit per object afneemt.

Tips

  • Kijk de film 'Beauty and the Beast' [1] om te zien hoe passieve objecten actief kunnen worden. Vooral de scene waarin Maurice het kasteel binnen komt [2] is karakteristiek voor dit concept.
  • Gebruik backward chaining [3] om één object verantwoordelijk te maken voor het einddoel en vervolgens nieuwe objecten te introduceren om hierbij te helpen.
  • Aarzel niet om nieuwe objecten te introduceren.

Gerelateerde patronen

  • don't ask, but tell
  • responsibility principle
  • Chain of responsibility

Referenties

  1. Trousdale, Gary & Wise, Kirk., Beauty and the Beast, 1991 (http://www.imdb.com/title/tt0101414/)
  2. Scene uit Beauty and the beast: Maurice komt het kasteel binnen (http://www.youtube.com/watch?v=AEKb6UNbH6c)
  3. Mauro, Terri. backward chaining (http://specialchildren.about.com/od/developmentalissues/g/backwardchaining.htm)

Auteurs

  • Pieter Joost van de Sande is Principal consultant Microsoft bij Atos Origin
  • Tjeerd Hans Terpstra is senior technical consultant Microsoft bij Atos Origin
Commentaar van anderen:
bags op 9-7-2010 om 9:42
It is very easy in Jaquet droz watches online shopping because there are so many online retailersomega watches. But you need a oris watches fashionable website,Marc Jacob replica handbags you can trust to bringing you the best designers in honest price Marni replica handbags. You will find, Miu Miu replica handbags in our online tabs. More is packed replica Piaget handbags with all the information that you need to buy fake, Juicy Corture replica is an interesting experience. replica Thomas Wylde handbags, copy copies of the famous designer is to Mulberry replica handbags:Gucci handbag, fendi reproductions, hermes copy handbags, Veneta replica handbags stylist reproductions,replica Bell & Ross, prada handbags, dior reproductions, Balenciaga, Chloe bag, mulberry, replica BlancPain, from chapter and many more brand replica Juicy Corture handbags.
replica handbags op 16-7-2010 om 10:12
Going earlychanel replica handbags in morning is the best designer handbagstime to find the bargains designer handbagsand some people will resell Mulberry bagsa perfectly good trendy Graham replica so they can get next season's onesFerrari replica.It's great to find bargains A.Lange & Sohne watchesand be fashion conscious but A.Lange & Sohne for salealso remember that it is your Tag Heuer watchesown personality that is what's special so spend as Rolex for salemuch time to work on your own bottega veneta replicainner development and growth as this is what Bvlgari replicatruly counts.The year 2007 marked the bottega bags175-th anniversary of LonginesConcord for sale watchmaking heritage. The brand,BlancPain watches with manufacture facilities established Mulberry replicain Saint-Imier, Switzerland swiss watchessince 1832, marked the occasion through holding thomas wylde bagsfestivities at the Genevan Cite du Temps.authentic fendi handbags As a part of the 175-th anniversary, Longines has also launched d&g handbagsits new jewel-watch for ladies called the cheap fendi handbagsLongines 175 Diamonds.
fasfaf fasfafaf op 28-7-2010 om 4:52
Tiffany jewelry manufacturers directory,cheap jewelry - lots of registered importers and exporters. Cheap tiffany jewelry manufacturers, Tiffany & co jewelry suppliers, tiffany jewelry wholesales, Tiffany Watches,exporters, sellers, traders and gold tiffany jewelry Distributors from China and around the world at www.goldtiffanyjewelry.com Tiffany jewelry exporters, Tiffany Accessories, Tiffany Bangles, Tiffany Bracelet, Discont Tiffany Bracelet, Discount Tiffany Cufflinks, Fashion Tiffany Earring, Tiffany Necklaces , Discount Tiffany Necklaces, Tiffany Rings, Tiffany Watches
Geef feedback:
Verzend Commentaar