![]() |
MVC -- Kommunikation unter Controllern?!
Hallo zusammen,
habe mich in letzter Zeit immer mehr dazu durchgerungen das MVC-Pattern für meine Applikationen zu nutzen. Nun habe ich aber folgendes Problem, da ich das ganze System eher von PHP-Frameworks her kenne: wie starte ich Aktionen eines Controllers, die nicht vom User angestoßen werden? Gibt es hier eine Art "Überstruktur" oder "Übercontroller"? Oder gibts es ein Konstrukt, welches gar kein Controller im MVC-Sinne ist? Hintergrund ist folgender: ich hab einen Application-Controller geschrieben, der als "Bootloader" dient. Dieser startet alle möglichen Dinge (DB-Verbindung herstellen, Konfiguration laden, Startparameter verarbeiten, Splash-Screen darstellen, MainForm darstellen etc.) und muss somit ja auch andere Controller und deren Aktionen zugreifen. Ist sowas in diesem Pattern gewollt? Oder wie löst man sowas sonst? Vorstellbar ist hier auch das Problem, dass eine Aktion immer wieder aufgerufen werden, oder allgemein gesprochen der Zugriff auf eine Aktion nicht vom User hervorgerufen werden soll, sondern von einem Programm/Code. Bin über jeden Tipp dankbar :) |
AW: MVC -- Kommunikation unter Controllern?!
Ich lege mir für solche "Übercontroller" Klassen (nach Bereichen - z.B. Verbindung zur DB) an, wo diese gespeichert werden.
Die Klasse selber leite ich von TComponent ab und gebe der Instanz als Owner Application mit. Aber für eine Aktion egal welcher Art muss es doch ein Event geben ... und sei es nur ein Timer der feuert ... |
AW: MVC -- Kommunikation unter Controllern?!
Das mit dem immer auftretenden Aufruf war auch nur ein Beispiel. Es geht dabei eher darum, dass Aktionen von Controllern nicht vom User selbst (Click auf Button z.B.) aufgerufen werden, sondern von z.B. einem Programmcode -- in meinem konkreten Beispiel wäre das der Startcode meiner Anwendung. Je mehr ich so darüber nachdenke, desto mehr glaube ich, dass ich so eine Überkomponente bauen sollte, die nicht mit dem MVC-Pattern direkt etwas zu tun hat. Diese ist dann -- in meinem speziellen Fall -- eben eine Art "Container", in dem dann alles abläuft, in dem dann auch die Controller "liegen", die eben ihre Aktionen anbieten.
|
AW: MVC -- Kommunikation unter Controllern?!
Meinst du jetzt irgendwelche Instanzen oder einfach nur Units?
|
AW: MVC -- Kommunikation unter Controllern?!
Zitat:
|
AW: MVC -- Kommunikation unter Controllern?!
Zitat:
Zitat:
Das mit den Messages muss ich mir mal anschauen, denn die Idee ist an sich nicht schlecht. Nur schaffe ich somit wieder Abhängigkeiten zwischen den einzelnen Controllern und deren Aktionen -- aber ich habe sowas ja eigentlich immer irgendwie, weswegen ich dann aber ein sinnvolles System aufbauen müsste, in so fern ich über Botschaften laufen will. |
AW: MVC -- Kommunikation unter Controllern?!
Was du suchst, nennt sich
![]() Kommuniziert wird klassisch, über String-Messages. Könnte man vielleicht auch mal ändern, muss man aber nicht. Jeder Controller muss sich dabei mit den Messages beim Mediator registrieren, für die er Nachrichten empfangen möchte. Falls du ein bisschen C# kannst, kannst du dir ja mal ![]() |
AW: MVC -- Kommunikation unter Controllern?!
Du solltest Dir auch mal TObject.Dispatch anschauen...
hier ist auch noch ein link dazu: ![]() Ich arbeite an einem MVP framework und stehe vor demselben Problem :wink: |
AW: MVC -- Kommunikation unter Controllern?!
Hallo,
wer sagt, dass ein Controller nur Nutzer-Eingaben verwaltet. Warum baust du dir keinen "System"-Controller, den du mit Anweisungen fütterst. Dieser Controller führt die Anweisungen aus, so als wenn ein User selber geklickt hätte. Heiko |
AW: MVC -- Kommunikation unter Controllern?!
Danke schon mal für die Gedanken und Hinweise! Vor allem bzgl. der Kommunikation der Controller untereinander bin ich nun sehr viel schlauer und werde dahingehend wohl einiges umbauen :thumb:
Seltsam finde ich auf die Dauer nur, dass mir sowas nicht viel früher über den Weg gelaufen ist und ich hier einfach zu wenig über genau sowas finde. Dachte schon ich habe sehr komische Probleme, die keinem anderen über den Weg laufen... :stupid: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz