5

ウィザードスタイルのユーザーインターフェイスを実装しています。ユーザーがウィザードをフローし、[次へ]をクリックすると、各画面で選択した選択肢に応じて、ユーザーは特定のウィザード画面のセットを通過する必要があります。

これはASP.NETMVCに組み込まれています。ウィザードにある一連のステップのロジックを実装するには、どのデザインパターンが最適か疑問に思います。繰り返しになりますが、選択内容に応じて、ウィザードを通る複数のパスがあります。

リンクリストを使用できますか?「コマンドデザインパターン」?おすすめは何ですか?

別の言い方をすれば、ユーザーがウィザードの特定のステップで選択した内容に基づいて、ウィザードの次のステップを決定するロジックをどこで/どのように抽象化/カプセル化しますか?

4

4 に答える 4

3

ユーザーがウィザードを前後に移動できるようにする場合は、「状態」パターンが意味をなす場合があります。

ワークフローパターンも理にかなっているかもしれません。たぶん、WindowsWorkflowFoundationを使用して調査してください。

于 2009-04-17T20:11:59.407 に答える
1

別の言い方をすれば、ウィザードの特定のステップでユーザーが選択した内容に基づいて、ウィザードの次のステップを決定するロジックをどこで/どのように抽象化/カプセル化しますか?

これを行う 1 つの方法は、Wizard、Step、および Product クラスをモデル化することです。たぶん、このようなものですか?

public class Wizard
{
  public Step forward() {//...}

  public Step backward() {//...}

  public Step current() {//...}

  public Product getProduct() {//...}
}

public class Step
{
  public String name() {//...}

  public void commit(Product product) {//...}

  public void rollback(Product product) {//...}
}

public class Product
{
  //...
}

ウィザードの目的は、製品 (車、コンピューター、休暇など) を構築することです。

このシナリオでは、ウィザードが構築している製品の状態に基づいて、次のステップを決定するのはウィザードです。ウィザードは、ディレクターである UI の制御下でビルダーのように動作し、いつ、どの方向に移行するかをウィザードに伝えます。実際に次のステップが何であるかを決定するのは、ウィザード次第です。複数の分岐点をサポートできますが、その実装はウィザード内に隠されます。

ステップは、取り消し/やり直し機能を備えたコマンド パターンのインスタンスになります。

于 2009-04-17T21:37:58.203 に答える
1

シンプルにするのが好きです。作成中のオブジェクトにステップ番号で値を設定したので、保険証券を作成している場合は、その保険証券にどのステップにあるかを示すプロパティを設定します。次に、ルーターである単一のメソッドがあり、ポリシーを見て次に送信する場所を決定します。ルーターに追加のロジックを構築してステップをスキップするか、各ステップメソッドにロジックを配置してルーターにリダイレクトすることができます方法。

于 2009-04-18T01:10:24.403 に答える
0

私はボーに同意しなければなりません。

実際、ナビゲーション ロジックに複雑な一連のルールが必要な場合、GUI に関するウィザードはありますが、内部のウィザードはありません。

構築しようとしているものが実際にウィザードである場合、各画面は最大で 2 ~ 3 の異なる画面 (IMO) に流れます。これは、非常に単純な構造 (データベース、静的構成ファイル) に簡単に格納できます。

于 2009-04-17T20:22:42.470 に答える