In der Vergangenheit hatte ich, beim Einsatz vom MVC Pattern immer eine eigene Implementation des Observer Pattern um Nachrichten vom Model ans View zu schicken.
Hierbei handelte es sich um ein einfaches Record welches nur Text verschicken konnte. Das View musste deswegen auch immer das Model, bzw. das Interface des Model kennen um Daten für Aktualisierung zu haben. Dies widerspricht meiner Meinung nach, dem Prinzip von Clean Code "Separation of Concerns" und koppelt das View ans Model.
Um dem entgegen zu wirken, experimentierte ich mit den Board-Mitteln Delphi, aus dem Namespace System.Messaging.
Im View hänge ich mich an den DefaultManager der Klasse TMessageManager.
Das Model schickt die Nachricht per SendMessage():
Den Ausführlichen Code findet man unter github.com Thurnreiter GeneralStuff
Hierbei handelte es sich um ein einfaches Record welches nur Text verschicken konnte. Das View musste deswegen auch immer das Model, bzw. das Interface des Model kennen um Daten für Aktualisierung zu haben. Dies widerspricht meiner Meinung nach, dem Prinzip von Clean Code "Separation of Concerns" und koppelt das View ans Model.
Um dem entgegen zu wirken, experimentierte ich mit den Board-Mitteln Delphi, aus dem Namespace System.Messaging.
Im View hänge ich mich an den DefaultManager der Klasse TMessageManager.
procedure TFormShowMessage.FormCreate(Sender: TObject);
begin
FSubscriptionId := TMessageManager.DefaultManager.SubscribeToMessage(TMessage,
procedure(const Sender: TObject; const AMessage: TMessage)
begin
Memo1.Lines.Add((AMessage as TMessage).Value);
end);
end;
Das Model schickt die Nachricht per SendMessage():
procedure TShopMessageModel.Refresh;
begin
TMessageManager.DefaultManager.SendMessage(Self, TMessage.Create(TimeToStr(Now)));
end;
Den Ausführlichen Code findet man unter github.com Thurnreiter GeneralStuff
Kommentare
Kommentar veröffentlichen