Quale modello di progettazione dovrebbe essere utilizzato per l'implementazione di finestre di dialogo complesse gestibili?

1

Di tanto in tanto implemento funzionalità che richiedono di porre domande agli utenti in modo sequenziale.
Le domande sono condizionali, ovvero la risposta definisce l'insieme delle seguenti domande.

Certo è il modello di progettazione dell'interfaccia utente di Wizzard, ma per ora non ho una chiara comprensione di come sia implementato dal punto di vista dell'architettura del software.

La schermata / domanda può essere un'interfaccia piuttosto complessa, ma la maggior parte delle volte è solo una selezione di diverse opzioni.
Tuttavia, dopo ogni passaggio possono essere richiesti alcuni calcoli, non solo per ottenere dati aggiuntivi ma per definire l'insieme di domande.

Immagino che il modello di strategia abbia a che fare con questo, ma ritengo che con questo modello il codice che costruisce "l'esecuzione flusso "può diventare brutto.

Grazie in anticipo.

    
posta Pavel Voronin 29.03.2013 - 11:07
fonte

2 risposte

3

Non riesco davvero a pensare a uno schema molto appropriato. Sembra un mix sia un modello strategico che una catena di responsabilità. Il prossimo collegamento nella catena viene quindi deciso dalla risposta selezionata.

Ma un'implementazione della strategia è definita in fase di compilazione e suppongo che la domanda provenga da un database.

Posso immaginare una soluzione molto semplice:

Una classe di domande ha una raccolta di risposte possibili e la classe di risposte ha una domanda successiva. Questo è in realtà un albero (grafico diretto), con le domande che sono nodi e le Risposte ai bordi di connessione.

L'interfaccia utente naviga nell'albero usando le risposte.

Questo è allo stesso tempo semplice da sviluppare e di facile manutenzione.

    
risposta data 29.03.2013 - 15:35
fonte
2

Potrei immaginare un sistema simile a una composizione di componenti (domande) che può essere richiesto in un ordine casuale.

Lo progetterei a livello di modelli architettonici utilizzando l'architettura Tubi e filtri . Le domande rappresenterebbero i filtri e le condizioni sarebbero implementate come pipe.

Ciò risulterebbe in un sistema, in cui è possibile porre domande in un ordine casuale, poiché è noto il vantaggio di questa architettura.

Per farlo funzionare, devi specificare una classe astratta o un'interfaccia per filtri e pipe. Forse, ci può essere solo un'implementazione di pipe che accetta la risposta da un filtro e decide quale sarebbe il prossimo filtro in una pipeline.

Solo un pensiero. L'implementazione sarebbe probabilmente più difficile.

    
risposta data 29.03.2013 - 11:20
fonte

Leggi altre domande sui tag