Montag, 4. Februar 2013

Kommunikation

Ein wichtiger Aspekt beim Design von Methoden wie myLife() ist die Kommunikation. Übergabeparameter und Rückgabetyp sucht man ja vergebens - weiß also am Anfang nicht, was rein kommt und am Ende bleibt sowieso nichts außer eine Menge vollgeschriebener Speicher, den ein GarbageCollector dann einsammeln muss.

Doch dazwischen gibt es zum Glück Wege und Methoden - eigentlich natürlich nur Methoden - mit der Funktionsumgebung in Kontakt zu treten. Eine wichtige ist die abstracte Klasse Friends, von der zu Beginn der Abarbeitung von myLife eine leere Liste von Objekten angelegt wird, die sich aber mit der Zeit mehr oder weniger schnell füllt (und freilich auch wieder leert). Über die in dieser Liste enthaltenen Objekte, die auch in anderen Kontexten als myLife verfügbar sind) kann der Systemkontext positiv auf myLife einwirken - die Pflege dieser Liste ist also von großer Bedeutung und sollte keinesfalls außer Acht gelassen werden, ermöglichen sie doch eine Bereicherung des Funktionsumfangs von myLife. 

Der Clou ist nämlich, dass alle in der Liste referenzierten Instanzen über eine völlig eigene Implementierung der Methode communicate(Obejct audience), die in Friends noch abstrakt deklariert wird, verfügen. MyLife() kann diese dann nutzen um sich auf verschiedenste Arten mit der Systemumwelt in Verbindung. 

Listing 1
Übergeben wir nun als audience mit Persönlichkeit das zentrale Objekt aus myLife(), so können wir mit allen Instanzen vom Typ Friends unterschiedlich kommunizieren. Dabei wird eine gewichtige Einschränkung jedoch deutlich: die eigene Persönlichkeit muss die passenden Methoden bereitstellen, sonst nutzen die besten Freunde nichts.

Keine Kommentare:

Kommentar veröffentlichen