Einzelnen Beitrag anzeigen

hzzm

Registriert seit: 8. Apr 2016
103 Beiträge
 
Delphi 10 Seattle Professional
 
#4

AW: Grundsaetzliche Struktur bei MV*

  Alt 8. Mai 2018, 07:55
Wäre über eine Factory ggf. möglich sich die Singleton-Instanz geben zu lassen.
Waere moeglich, oder ist State-of-the-Art die Situation zu behandeln?
Wer gibt denn dann diese Controller-Instanzen raus? Main-Objekt haelt sie, alle neben-units (unter-units), die sich gegenseitig brauchen, holen sich Interfaced von Main dann die Nachbar-Controller-Instanz?
Bringt mir das seitens der ASM-Zugriffe nachher tatsaechlich Vorteile?


wie man den entsprechenden Teil (Controller, Presenter, ViewModel) erstellt
Um ViewModel, Model, View oder Presenter geht es mir gar nicht. Dass sich diese Zusammenhaenge aus dem jeweiligen Pattern ergeben, ist schon klar.
Es geht nur um das ueberliegende Controller(-artige) Objekt.

Grundsätzlich möchte ich aber von Singleton oder globaler Variable abraten, denn das führt die Verwendung des Patterns ad absurdum.
Okay, ich hab anscheinend irgendwas verpasst. Reden wir mal ueber MVC explizit:
Von diesem Beitrag:

Main project file:
Delphi-Quellcode:
var
  Model: TModel;
  Controller: TController;
begin
  Application.Initialize;
  Application.CreateForm(TMainForm, MainForm);

  Model := TModel.Create;
  Controller := TController.Create(Model, MainForm);

  Application.Run;

  Controller.Free;
  Model.Free;
end.
Es bleibt - wie bei allen Beispielen die ich finde - unklar, wie auf benachbarte Controller-Instanzen zugegriffen wird.

Delphi-Quellcode:
var
  ApfelModel: TModel;
  ApfelController: TController;
  SaftpresseModel: TModel;
  SaftpresseController: TController;
begin
  Application.Initialize;
  Application.CreateForm(TMainForm, MainForm);

  ApfelModel := TModel.Create;
  ApfelController := TController.Create(ApfelModel, MainForm);
  SaftpresseModel := TModel.Create;
  SaftpresseController := TController.Create(SaftpresseModel, MainForm);

  Application.Run;

  ApfelController.Free;
  ApfelModel.Free;
  SaftpresseController.Free;
  SaftpresseModel.Free;
end.
Alles klar, aber inhaltlich benoetigt ist Apfel uses Saftpresse .
Und nun? Die beiden Controller liegen ja nur als fluechtige Instanzen so nebeneinander rum.

Geändert von hzzm ( 8. Mai 2018 um 09:34 Uhr) Grund: Okay, ich hab' in dem verlinkten Beispiel was uebersehen
  Mit Zitat antworten Zitat