Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Weitere Verständnisfragen zu MVP (https://www.delphipraxis.net/185473-weitere-verstaendnisfragen-zu-mvp.html)

Kidi 15. Jun 2015 09:05


Weitere Verständnisfragen zu MVP
 
Hallo alle zusammen,
Bei meinen Fragen beziehe ich mich auf das MVP Beispiel von Stevie http://www.delphipraxis.net/182119-v...bleme-mvp.html Antwort #9.
Dort wird in der Projektdatei das Model erstellt und dem Presenter im Create übergeben. Was spricht dagegen das Model nicht gleich im Presenter zu createn?
Muß oder Soll für jedes Control ein eigenes Modell erstellt werden? Diese könnte ja dann eine lange Parameterliste nachsich ziehen wenn die Models im Presenter Create übergeben werden. So das sind ersteinmal die ersten Fragen, glaub mal das da noch einige kommen, aber das dann in einem anderen Thread.

Mfg
Didi

Kidi 16. Jun 2015 08:20

AW: Weitere Verständnisfragen zu MVP
 
** Push ''

TiGü 16. Jun 2015 09:10

AW: Weitere Verständnisfragen zu MVP
 
Zitat:

Zitat von Kidi (Beitrag 1305101)
Dort wird in der Projektdatei das Model erstellt und dem Presenter im Create übergeben. Was spricht dagegen das Model nicht gleich im Presenter zu createn?

An und für sich nichts, aber so bist du hinterher flexibler, wenn das Model geändert werden muss. Das hier nennt sich constructor injection.
Siehe auch: http://www.codefest.at/post/2009/11/...Injection.aspx

Kidi 16. Jun 2015 10:12

AW: Weitere Verständnisfragen zu MVP
 
Hallo Tigü,
Danke für den Link.
Also ich verstehe das so.

Delphi-Quellcode:
type
  IModelBaseIntf = Interface
     GUID.......
     procedure MachWas;
  end;

  TModelBaseIntfClass = class(TInterfacedObject, IModelIntf )
    ...
    ...
    procedure MachWas;
  end;

  IModelIntf = interface(IModelBaseIntf)
     GUID.......
     procedure MachWasAnderes;
  end;


  TModelIntfClass = class(TModelBaseIntfClass , IModelIntf)
    ...
    ...
    procedure MachWasAnderes;
  end;


  TPresenter = class
    IModelInterface : IModelBaseIntf;
    constructor Create(ModelBaseIntf: IModelBaseIntf );
  end;





  var
    Presenter: TPresenter;
    Model: IModelIntf ;
  begin
     Model:= TModelIntfClass .Create;
  Presenter:= TPresenter.Create( Model);

soweit so gut, wenn ich da immer noch den richtigen Gedanken hab, läst sich das Model jetzt austauschen wenns von IModelBaseIntf abgeleited wird.
Aber da muß ich doch im Presenter immer auf IModelIntf casten.
Und da seh ich dann keine Flexibilität. Oder hab ich das ganze doch falsch verstanden?

Mfg
Didi

Mavarik 16. Jun 2015 10:22

AW: Weitere Verständnisfragen zu MVP
 
Bitte Sourcecode mit dem Delphi Tag umfassen!

Danke

Kidi 16. Jun 2015 10:27

AW: Weitere Verständnisfragen zu MVP
 
Hallo Mavarik,
hast du noch nie was vergessen?
Antworten auf die Fragestellung währen Hilfreicher gewesen.

mfg
Didi

TBx 16. Jun 2015 10:40

AW: Weitere Verständnisfragen zu MVP
 
Zitat:

Zitat von Kidi (Beitrag 1305240)
Hallo Mavarik,
hast du noch nie was vergessen?
Antworten auf die Fragestellung währen Hilfreicher gewesen.

mfg
Didi

Das hat er ja nicht gesagt.
Man sollte aber bedenken, dass hier viele Leute Ihre (teure) Arbeitszeit opfern, um anderen zu helfen.
Da ist die Bitte um gut lesbaren Code (eben durch Verwendung von Tags) wohl legitim.
Wenn man Hilfe möchte, sollte man es sich verkneifen, andere anzupampen. :warn:

TiGü 16. Jun 2015 10:58

AW: Weitere Verständnisfragen zu MVP
 
Zitat:

Zitat von Kidi (Beitrag 1305235)
Und da seh ich dann keine Flexibilität. Oder hab ich das ganze doch falsch verstanden?

Und wenn du mal so eher in die Richtung denkst, dass es nur ein IModelBaseIntf gibt was von zwei bis N Model-Klassen implementiert wird? 8-)

Kidi 16. Jun 2015 11:20

AW: Weitere Verständnisfragen zu MVP
 
Das würde ich jetzt so verstehen.

Delphi-Quellcode:
type
  IModelBaseIntf = Interface
     GUID.......
     procedure MachWas;
  end;

  TModelBaseIntfClass = class(TInterfacedObject, IModelIntf )
    ...
    ...
    procedure MachWas;
  end;
   
  TEineAndereModellClass = class(TInterfacedObject, IModelIntf )
   ...
    ...
    procedure MachWas;
  end;

  TNochEineAndereModellClass = class(TInterfacedObject, IModelIntf )
   ...
    ...
    procedure MachWas;
  end;
Ich könnte jetzt jede Klasse einsetzen, hätte aber ein anderes verhalten, wenn der Code in der Procedure MachWas anders ist.
Jetzt sehe ich auch eine Flexibilität.

Mfg
Didi

Kidi 16. Jun 2015 11:23

AW: Weitere Verständnisfragen zu MVP
 
Jetzt hat sich eigentlich auch die Frage "Muß oder Soll für jedes Control ein eigenes Modell erstellt werden?" erübrigt.

Mfg
Didi


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:12 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz