4

Winforms に MVP パターンを実装するとき、プロパティ、セッター、およびゲッターが多すぎるビュー インターフェイスが肥大化していることがよくあります。簡単な例として、3 つのボタンと 7 つのテキスト ボックスを含むビューを使用します。これらはすべて、ビューから公開された値、有効、および可視のプロパティを持ちます。これに検証結果を追加すると、簡単に 40 のようなプロパティを持つインターフェイスになる可能性があります。プレゼンテーション モデルを使用すると、同じ数のプロパティを持つモデルも存在します。

すべての値をやり取りする肥大化したプレゼンター ロジックを使用せずに、ビューとプレゼンテーション モデルを簡単に同期するにはどうすればよいでしょうか? (その 80 行のプレゼンター コードで、モデルとビューをモックするプレゼンター テストを想像してみてください。その転送をモックするためだけに 160 行のコードが表示されます。) winforms のデータ バインディングに頼らずにこれを処理するフレームワークはありますか? (winforms ビューとは異なるビューを使用したい場合があります。一部の人によると、この同期はプレゼンターの仕事である必要があります..) AutoMapper を使用しますか?

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

4

2 に答える 2

3

これは 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; }
}

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

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

于 2010-06-01T04:18:35.553 に答える