Als ich mit Delphi angefangen habe dachte ich auch erst das Observer-Pattern so umsetzen zu müssen, da ich es in Java (vor Java 8) so gelernt hatte.
Vielleicht habe ich es mir jetzt nicht genau angesehen, aber das Interface "Listener" ist doch eigentlich überflüssig, oder? Warum muss mein Objekt eine bestimmte Schnittstelle implementieren, nur um etwas mitzubekommen? Man könnte dem Subject stattdessen eine
procedure register(onNotification: TProc)
verpassen mit welcher
jeder auf dem Observable einmal z.B. sagen kann
Delphi-Quellcode:
someObservable.register(
procedure()
begin
ShowMessage(someObservable.someValue);
end
);
Man könnte sich auch mehrmals registrieren. Sehe ich mit dieser Implementation nicht wie das ginge.
Das ist glücklicherweise wie man das in letzter Zeit auch häufig ab Java 8 und C++ 11 sieht. Ob das "Turbo Pascal" auch kann weiß ich nicht, ich weiß noch nichtmal was das ist.
Allen Bauer hier auch mal so etwas in die Richtung gebaut:
https://community.embarcadero.com/bl...generics-38865