ich habe versucht, mit folgendem Code mehrere Handler an einen Event zu hängen:
Code: Alles auswählen
constructor TSpiel.Create;
begin
FSpielfeld := TSpielfeld.Create;
FView := TView.Create;
(* Events mit den Handlern verbinden *)
FSpielfeld.BeiSpielerBewegung := @FView.SpielerBewegen;
FSpielfeld.BeiSpielerBewegung := @self.BewegungAusgefuehrt;
FView.UserAktion := @FSpielfeld.VerarbeiteUserAktion;
FView.UserAktion := @self.VerarbeiteUserAktion;
end;
Ich könnte das natürlich versuchen so nachzucoden. Allerdings bei meinem bisherigen Wissensstand wäre das ein blindes Hinterhertappen mit allen Risiken und Fehlversuchen und daher erlaube ich mir vorab die Frage, ob ihr eine bessere Lösung für mein Problem kennt. Letztlich geht es mir darum, dass zwei Objekte (vom Typ Spielfeld (= Model) und View) möglichst nur lose gekoppelt sind und sich gegenseitig mit Events über Aktionen oder Statusänderungen informieren. Die obigen Verknüpfungen von Event und Handler erfolgen in einem dritten Objekt names 'Spiel' ( = Controller).
EDIT: Wer sich den Code genauer ansehen will: ist jetzt beigefügt, funzt aber noch nicht richtig.
Nochmal EDIT: Eine Idee ist mir jetzt selbst gekommen. Ich kann natürlich auch händisch das Observerpattern implementieren und dabei alle Klienten in einer Liste halten, an die man sich als Beobachter anmelden und abmelden kann... oder?