私は電子メールニュースレターの作成とテストに使用したWinForm
を持っています。このフォームには、さまざまなメソッドとイベントが含まれています。Winformの機能を処理する2つの異なる方法に対応するデザインパターン
私はプログラムにスプリットテスト(A/Xテスト)を許可し、キャンペーン用に最大4つの異なるニュースレターを作成するための新しい機能を追加します。
したがって、通常のニュースレターとA/Xニュースレターの両方に対応するようにフォームを拡張したいと考えています。私は私のフォームに2つの異なるモードを追加するつもりです。次のようなものがあります:
private enum CampaignMode { Normal, AxTest };
多くのコントロールの視認性が変わることを除いて、外観は非常に似ています。
とは別に、ほとんどすべてのメソッドとイベントには、2つの処理方法があります。
別の新しいフォームを作成する必要がないように、どのデザインパターンを使用する必要がありますか?
- コンストラクタ:簡単にするために
は、のは、私のフォームは、次のメソッドを持っているとしましょう、おそらくパラメータとして
EditMode
を受け - ロード
- を作成します。ボタンのクリックイベントを
- SetControlViews:Based
Normal
モード - MethodBに固有:
EditMode
上のコントロールの可視性 - MethodA設定
AxTest
モード
あなたはMVPのようなものを考えましたか?フォームはビューインタフェースに抽象化され、次に2つの実装(プレゼンター?)があります。 –
@DavidOsborne問題は、この形式は大きなプログラムのほんの一部に過ぎません。最初に 'MVP'を適用するのはいいでしょう。しかし、私は、プログラムの完全な見直しをしなければ、フレームワークを部分的に適用することは私には何の役にも立たないでしょう。 – Disasterkid
必ずしもそうではありません。 IViewコンセプトを採用し、2つのプラグイン可能な実装を持つことができます。きちんとしたSOLIDソリューションを作成するために厳密にMVPである必要はありません。 –