@hzzm
Ich habe MVP immer so umgesetzt.
In der "program" Datei (*.dpr)
Werden die Presenter erzeugt.
Im Konstrukor der Presenter werden View und Model als Interface Parameter übergeben.
Im Konstruktor des Presenters werden View und Model dann mit eineander verdrahtet (Observer werden Registriert usw.)
KannWasPresenter := TKannWasPresenter.create((TKannWasView.create)as IKannWasView, (TKannWasModel.create) as IKannWasModel) as IKannWasPresenter;
Mein Presenter war immer ein reiner Gluecode-Container! Ich weiß nichtmal ob das so noch MVP heißt,
aber es hat echt gut funktioniert und es mir ermöglicht TModel in verschiedenen Projekten wieder zuverwenden.
Leider habe ich danach einen Ausflug in die Welt von MVVM und Livebindings gemacht
Und das war ein Fehler.
Meine Version von MVP hat mir echt mehr gebracht.
Jetzt habe ich mein MVVM projekt komplett von Livebindings befreit, weil ich zu dumm dafür bin....
Dadurch letzten Endes Viel Code in TForm Klassen und eine aufgeblähte VM Klasse dazwischen,
von der ich eigentlich nur die Navigations funktionalität bräuchte...