3

アイコンビューまたは詳細ビューのいずれかでアイテムのリストを表示するために、WindowsフォームにListViewコントロールがあります。ListView状態ロジックを分離し、UIウィンドウから呼び出されるすべてのメソッドを持つIStateからそれらを継承する2つの状態クラスIconsStateとDetailsS​​tateを作成したいと思います。

詳細ビューにはRetrieveVirtualItemイベントがあり、アイコンビューにはDrawItemイベントがあります。UIに存在するIState変数からそれらを呼び出すには、両方の状態の子孫クラスがそれらを実装する必要があります。DetailsS​​tateにDrawItemがあると、戻るだけです。IconsStateのRetrieveVirtualItemについても同じです。

州での空のメソッドの実装を回避するための別の設計アプローチはありますか?

4

1 に答える 1

0

はい、より良いアプローチがあります。クラスに、そこにあるはずのないメンバーを強制するのは設計上の臭いです

または、MVP パターンを使用することもできます。これにより、テスト容易性が大幅に向上します。MVP のパッシブ ビュー バリエーションでは、1 つのモデル、2 つのダム ビュー、およびユーザーの選択に応じてレンダリングするビューを決定するプレゼンターがあります。

MVP に関するその他のリソース: MVPパッシブ
の SO タグ Windows フォームのサンプル MVP の例を表示

于 2012-04-11T15:45:34.447 に答える