MVP、Winforms-肥大化したビュー、プレゼンター、プレゼンテーションモデルを避ける方法
-
05-10-2019 - |
質問
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; }
}
ここでは、各フィールドに関連付けられたさまざまなプロパティをまとめます。
ちなみに、テストのためにこれらのインターフェイスを手でスタブしないことをお勧めします - モッキングフレームワークを使用します。