folgende Situation:
Ich habe eine von Thread() abgeleitete Klasse "myThread" sowie eine Klasse "myObject" mit einer bestimmten Aufgabe.
Im angegebenen Intervall werden nun in der Methode execute() der Klasse "myThread" unter bestimmten Voraussetzungen Objekte der Klasse "myObject" erzeugt.
Code: Alles auswählen
METHOD myThread:execute()
[...]
obj := myObject():new(p1,p2,...)
[...]
RETURN self
Bestimmte Methoden dieser Klasse dürfen nicht verändert werden.
Jedoch möchte ich dem Anwender die Möglichkeit geben eigene Methoden hinzuzufügen oder bestehende um spezifischere Aufgaben zu erweitern.
Leitet man aber nun eine Klasse von "myObject" ab würde das ganze momentan nicht funktionieren, da ich mich ja nicht mehr auf die Klasse "myObject" beziehen kann.
Das einzige, was mir momentan einfällt, wäre die Verwendung des &-Operators. Dann müsste ich den Klassennamen an "myThread" übergeben. Finde ich persönlich nicht so schön und man könnte der Methode init() der von "myObject" abgeleiteten Klasse keine zusätzlichen Parameter übergeben.
Alternativ könnte man eine Klasse Creator erstellen, der man den Klassennamen und die Parameter übergibt, welche dann daraus die Eigentliche Anweisung zusammenbaut und das Objekt erzeugt.
In der execute-Methode würde dann eine anstelle von
Code: Alles auswählen
obj := myObject():new(p1,p2,...)
Aber ist das dann noch im Sinne der Objektorientierten Programmierung bzw. gibt es da nicht eine "vernünftigere" Lösung?
Bin für jeden Vorschlag dankbar.