4

したがって、要件は、マルチステップ ウィザード/シングルステップ ウィザード用の汎用インターフェイスを作成することです。各ウィザードにはすべてのボタンがない場合があるため (単一ステップのウィザードには [キャンセル] と [送信] しかありませんが、複数ステップの最初の画面には [キャンセル]、[次へ] などがあります)。

ボタンごとに個別のインターフェイスを作成する必要がありますか

interface CancelButton 
{
   void onCancelClick();
}

interface NextButton 
{
   void onNextClick();
}

等々?そして、各ウィザードは必要なものだけを実装しますか?

このユースケースに適した設計パターンはありますか?

ありがとう。

4

1 に答える 1

1

単純なクラス階層が必要なようです。、 、など、WizardPage重要なウィザード ページのケースごとに、いくつかの基本抽象クラスとサブクラスが必要です。ウィザードはウィザード ページのコレクションとして定義され、各ページは表示するボタンを認識します。特定のデザイン パターンではなく、単純な OOP。WizardWelcomePageWizardLastPageWizardIntermediatePage

このアイデアのもう 1 つのバリエーションである、物事をより柔軟にすることは、コンストラクターでインスタンスWizardPageのコレクションを受け入れるようにベースを作成することです (そして、、はサブクラスになります)。これにより、ウィザード ページとウィザード ボタンに個別の階層 (バリエーション) を持たせることができます。これは、Bridge パターンと考えてよいと思います。各ボタンのサブクラスは、コンストラクターで別のインターフェイスを要求し、クリックされたときにこの情報を に送信して、次のページに移動する、キャンセルする、または受け入れるなどの適切なアクションを実行できるようにします。また、コンテンツがいつ有効または無効になったかを示すために、それぞれからの別のイベント チェーンも必要になるでしょう。WizardButtonWizardCancelButtonWizardAcceptButtonWizardNextButtonWizardEngineWizardPageWizardEngine.

于 2012-09-01T02:59:53.913 に答える