@Laurin
> Hm... vom testen her ist Variante zwei wohl fast angenehmer....
> Was mir halt einfach nicht passt ist wie ich die Form handle im
> Presenter.
> Der ctor des Presenters sieht ja irgendwie so aus:
>
> public AdminPresenter(IAdminView view)
> {
>
> }
Welche Tests meinst Du da genau? Die des Konsumenten-Codes oder die
des Presenters?
Falls Du den Konsumenten-Code meinst gebe ich Dir recht, wenn Du eine
weitere Indirektion dazwischen hast (z.b. ne Factory für den Presenter
oder den IoC). Damit bist Du in der Lage das ganze durch Test-Doubles
zu ersetzten und den Konsumenten-Code isoliert zu testen. Soweit so
gut.
Falls Du den Test des Presenters meinst sehe ich da ehrlich gesagt
keinen Unterschied. Sieht der Presenter nicht in beiden Varianten
gleich aus? Variante 1 und 2 unterscheiden sich doch nur durch die
Integration in die View bzw. den unterschiedlichen Konsumenten-Code.
> Ja da hast du recht. Nur muss ich dann ShowDialog und Show wrappen,
> das gefällt mir auch nicht so...
Ach, halte ich eigentlich für nicht so schlimm. Pack das ganze in nen
Presenter - LayerSuperType und dann ist das eigentlich ganz angenehm
zu benutzen.
public interface IStandardView
{
DialogResult ShowDialog();
}
public class Presenter<TView> where TView : IStandardView
{
protected Presenter(TView view)
{
View = view;
}
TView View { get; private set; }
public DialogResult Show()
{
return View.ShowDialog();
}
}
> setzt jemand von euch eingentlich MVC bei WinForms noch ein? Ich
> bevorzuge das MVP stark....
Ich habe in der Vergangenheit in WinForms-Apps oft MVP gemacht und
fühle mich da von allen UI-Patterns auch am wohlsten. Hab früher
strikt Passive-View gemacht (um die View so dumm wie möglich zu
halten). Mit dem Alter kommt Gelassenheit und inzwischen setzte ich
eigentlich bei größeren Views eher Supervising Controller ein. Ist vom
Doing einfach angenehmer.
Interessant in der Hinsicht ist, dass MVP sich in WPF irgendwie nicht
mehr so gut anfühlt (wobei ich da auch grad erst mit dem Lernen
angefangen hab). Mittlerweile beginne ich zu verstehen, warum
PresentationModel sich in WPF zum Standard-Pattern entwickelt
hat . . .
VG
Björn