Modelli di progettazione:Quale è più appropriato da utilizzare per un'interfaccia utente in stile procedura guidata?

StackOverflow https://stackoverflow.com/questions/762008

Domanda

Sto implementando un'interfaccia utente in stile Wizard.Mentre l'utente procede attraverso la procedura guidata, facendo clic su Avanti, a seconda delle scelte scelte in ciascuna schermata, l'utente dovrà passare attraverso un determinato insieme di schermate della procedura guidata.

Questo è stato creato in ASP.NET MVC.Mi chiedo quale modello di progettazione sarebbe più adatto per implementare la logica della sequenza di passaggi presente nella procedura guidata.Ancora una volta, hanno più percorsi attraverso la procedura guidata a seconda delle scelte che fanno.

Potrei usare un elenco collegato?IL "Modello di progettazione dei comandi"?Che cosa mi consiglia?

Per dirla in un altro modo:Dove/come si astrae/incapsula la logica per determinare qual è il passaggio successivo della procedura guidata in base a ciò che l'utente ha scelto in un passaggio particolare della procedura guidata?

È stato utile?

Soluzione

Per dirla in un altro modo:Dove/come si astrae/incapsula la logica per determinare qual è il passaggio successivo della procedura guidata in base a ciò che l'utente ha scelto in un passaggio particolare della procedura guidata?

Un modo per farlo sarebbe modellare le classi Wizard, Step e Product.Forse qualcosa del genere?

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
{
  //...
}

Lo scopo della procedura guidata è creare un prodotto (auto, computer, vacanze, ecc.).

In questo scenario, è la procedura guidata a decidere il passaggio successivo, magari in base allo stato del prodotto che la procedura guidata sta creando.Il mago si comporterebbe come un Costruttore sotto il controllo dell'interfaccia utente, che sarebbe il direttore e direbbe al mago quando e in quale direzione effettuare una transizione.Spetta al Mago decidere quale sarà effettivamente il passo successivo.Potrebbero essere supportati più punti di diramazione, ma tale implementazione sarebbe nascosta all'interno della procedura guidata.

Step sarebbe un'istanza di Modello di comando con funzionalità di annullamento/ripetizione.

Altri suggerimenti

IL "Stato" potrebbe avere senso se si desidera consentire all'utente di spostarsi avanti e indietro nella procedura guidata.

Potrebbe anche avere senso uno schema di flusso di lavoro.Forse indaga utilizzando Windows Workflow Foundation.

Mi piace mantenerlo semplice.Imposto un valore sull'oggetto che sto costruendo con un numero di passo, quindi se sto costruendo una polizza assicurativa avrei una proprietà sulla polizza che indica in che passo si trova.Quindi ho un unico metodo che è il router, esamina la policy e determina dove inviarla successivamente, puoi creare una logica aggiuntiva nel router per saltare i passaggi oppure puoi inserire la logica in ogni metodo di passaggio e reindirizzarla al router metodo.

Devo essere d'accordo con Beau.

In realtà, se hai bisogno di un insieme complesso di regole per la logica di navigazione, allora hai una procedura guidata a livello di GUI, ma non una procedura guidata sotto il cofano.

Se ciò che stai cercando di creare è davvero una procedura guidata, ogni schermata dovrebbe confluire in un massimo di 2-3 schermate diverse (IMO).Ciò potrebbe essere archiviato facilmente in una struttura molto semplice (database, file di configurazione statico).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top