 |
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
AFE-GmdG JLI MVP


Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 03.09.2007, 14:15 Titel: Klammerfunktion [Sprachneutral, Vererbungsdesign] |
|
|
Hallo,
ich suche nach einem Designvorschlag für Vererbung, für folgendes Designproblem:
Ich möchte in einer Basisklasse erreichen, dass immer dann, wenn eine Funktion der Basisklasse oder einer von Ihr abgeleiteten Klasse aufgerufen wird eine boolische Variable auf Wahr gesetzt ist. Es muss zudem sichergestellt sein, dass wenn die Funktion verlassen wird (Aus welchem Grund auch immer, normal oder durch Abbruch, auch z.B. durch Ausnahme) diese Variable wieder auf Falsch zurückgesetzt ist.
Und dass, ohne in den geerbten Klassen Code zu schreiben.
Zweck: Ermittlung, ob irgend ein Aufrufer innerhalb einer Funktion ist. Eine weitere Funktion könnte z.B. abhängig von diesem Umstand anders handeln.
Für den Anfang muss es nicht Multithreadsave sein - weil dann bräuchte man ja mindestens einen Counter.
Wie gesagt, ich suche nur eine Idee, wie man sowas umsetzen kann, für C# werde ich es dann selbst implementieren können / müssen...
Hoffe auf Ideen,
AFE-GmdG |
|
Nach oben |
|
 |
GreveN JLI Master

Alter: 38 Anmeldedatum: 08.01.2004 Beiträge: 901 Wohnort: Sachsen - Dresden Medaillen: Keine
|
Verfasst am: 03.09.2007, 15:02 Titel: |
|
|
Ich würd wahrscheinlich versuchen, das via Template-Method-Pattern zulösen. Proxy-Pattern wäre eventuell auch eine Überlegung wert, aber das hängt vom Kontext ab.
Diesen "Hook" vor und nach Ausführung der eigentlich Funktion kapselst du in eine eigene Klasse, so kannst du das relativ elegant lösen. Exceptionsicherheit bekommst du via "RAII", also im bzw. als ersten Hook ein Objekt erzeugen, welches dir die Variable via Konstruktor setzt und dieses Objekt nach dem Ausführen der Funktion zerstören und die Variable im Destruktor zurücksetzen.
Ich weiß, meine Beschreibung klingt etwas wirr, wenn etwas unklar ist, frag am besten nochmal nach. ;) |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|