MVP、Winforms-肥大化したビュー、プレゼンター、プレゼンテーションモデルを避ける方法

StackOverflow https://stackoverflow.com/questions/2943378

質問

WinformsにMVPパターンを実装するとき、私はしばしば、あまりにも多くのプロパティ、セッター、ゲッターを備えた肥大化ビューインターフェイスを見つけます。 3つのボタンと7つのテキストボックスを備えたビューを持つ簡単な例。すべてのビューから露出した価値、有効化、可視プロパティを備えています。これの検証結果を追加すると、40ishプロパティを持つインターフェイスに簡単に終了する可能性があります。プレゼンテーションモデルを使用して、同じ数のプロパティを持つモデルがあります。

すべての値を前後に渡す膨満感のあるプレゼンターロジックを持たずに、ビューとプレゼンテーションモデルを簡単に同期するにはどうすればよいですか? (その80ISH Lineのプレゼンターコードで、モデルをock笑し、ビューがそのように見えるプレゼンターテストで想像してみてください。 (Winformsビューとは異なるビューを使用することをお勧めします。一部の人によると、この同期はプレゼンターの仕事になるはずです。)AutomApperを使用しますか?

間違った質問をしているのかもしれませんが、MVPはここで良い解決策なしに簡単に肥大化しているようです。

正しい解決策はありません

他のヒント

これは1つのアイデアであり、一部の人々がそれを好まないかもしれないことを知っています。ここでできることはたくさんあります。

多くのボイラープレートコードを使用していることに気付いた場合は、それをカプセル化します。

public class UiField<ContentType>
{
    public bool IsEnabled { get; set; }
    public ContentType Value { get; set; }
    public bool IsVisible { get; set; }
}

あなたの見解では、次のようになります。

public interface ISampleView
{
    UiField<bool> IsStaffFullTime { get; set; }
    UiField<string> StaffName { get; set; }
    UiField<string> JobTitle { get; set; }
    UiField<int> StaffAge { get; set; }
    UiField<IList<string>> Certifications { get; set; }
}

ここでは、各フィールドに関連付けられたさまざまなプロパティをまとめます。

ちなみに、テストのためにこれらのインターフェイスを手でスタブしないことをお勧めします - モッキングフレームワークを使用します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top