Überprüfen, ob sich eine Reihe Merkmale in der Objektstruktur verändert haben

Begonnen von RR, Jan 13, 2023, 04:24 NACHMITTAGS

Vorheriges Thema - Nächstes Thema

RR

Oftmals verteilen sich Merkmale in der Objektstruktur, und es ist ein Methodenaufruf vonnöten, wenn sich eines dieser Merkmale geändert hat.
Ungünstig ist, wenn man dazu im Zuweisungstrigger jeweils die Methode aufruft, weil dann z.B. bei der Initialisierung von Objekten möglicherweise dutzendmal ein und dieselbe Aktion gestartet wird.

Stattdessen kann man sich einen SML in einer eigens dafür vorbereiteten Klasse anlegen, von der man ein Objekt zur Laufzeit erzeugt.

Für jedes zu überprüfende Merkmal wird dann eine Zeile in der SML-Definition angelegt, und in der Methode des SML wird die Methode für die Aktion aufgerufen.

An der Komponente für diese Hilfsklasse wird dann der zugehörige SML-Trigger zu diesem SML definiert, und die Kriterien mit den Pfaden zu den zu überprüfenden und in der Objektstruktur verteilten Wasele gebildet.
Forum Moderator

S.Saibel

Hallo RR,

bewirkt das Anlegen von Watchdogs dasselbe? Worin liegen die Vor- / Nachteile beider Verfahren?

RR

Die Nachteile des Watchdogs sind aus meiner Sicht

a) mehr Programmierung
Man muss mit der camos-Funktion WatchdogCreate erst einmal einen Watchdog erzeugen, und dann für jeden zu überwachenden Ausdruck einen Aufruf WatchdogSetOn für den erzeugten Watchdog registrieren.
b) Beim Zutreffen von per WatchdogSetOn registrierten Ausdrücken, kommt es m.E. zu mehreren Aufrufen der in WatchdogCreate angegebenen Trigger-Methode.

Mit dem SML-Mechanismus werden mehrere Ausdrücke auf einmal auf Änderung überprüft, und der SML-Trigger nur einmalig gestartet.

Nachteil des SML-Mechanismus ist ein zusätzliches Trigger-Objekt (und Klasse). Das kann man sich jedoch zum eigenen Vorteil zunutze machen. Die Triggerklasse kann unterschiedliche SMLs je nach Verwendungsfall bereitstellen, und SML-Trigger lassen sich mit Regelwerk bei Bedarf ein- und ausschalten.
Forum Moderator