Sto lavorando su un programma che ha molti frontend. L'applicazione principale ha una GUI che consente un sacco di interazione manuale dell'utente. Il secondo è più simile a uno script che esegue solo un flusso di lavoro predefinito.
A un certo punto potrebbero apparire domande all'utente. Questi sono più spesso legati a dati di input ambigui, in cui l'utente deve decidere su una delle possibilità. Le ambiguità spesso provengono dal formato dati di un programma esterno, quindi non è possibile eliminarle semplicemente.
Il modo più semplice per ottenere l'input dell'utente è semplicemente aprire una finestra di messaggio con le opzioni disponibili. Preferirei comunque avere diverse classi che gestiscono questo. Uno che crea una finestra di dialogo della GUI, una che richiede le opzioni sulla CLI e una che risponde solo dalle decisioni preregistrate (ad es. Per il test).
Le due possibilità che vedo hanno un singleton che memorizza un oggetto della classe desiderata o lo passa attraverso l'intera gerarchia di chiamate per ogni piccola classe che può sollevare una domanda.
Esistono modelli di progettazione o best practice su come risolvere questo problema? Mi sembra un problema standard.