Responsabilità per l'aggiunta e l'ordinazione di voci di menu in un'applicazione modulare

2

Dopo Ordinare le voci di menu alimentate da più moduli mi è stata rivolta una domanda, che è responsabile per l'ordine e l'allineamento delle voci di menu in un'applicazione modulare.

Il link precedente suggerisce che il modulo che offre la voce di menu è responsabile di dire dove sarà localizzato ("all'indice n", "dopo il modulo x", "prima del modulo y"). Molte altre risorse propongono un IMenuService in cui i moduli possono registrare o rimuovere le voci di menu, ad es. Framework PRISM .

Ma intuitivamente direi che l'applicazione principale dovrebbe assumersi la responsabilità. I moduli non dovrebbero necessariamente conoscere altri moduli solo per ordinare la propria voce di menu. Né il modulo in linea di principio dovrebbe decidere da solo dove appare nel menu in un contesto più ampio. Per esempio. la voce di menu di logout dovrebbe avere un po 'di offset rispetto ad altri elementi o una determinata voce di menu ottiene un colore speciale perché è considerata importante dall'applicazione al momento.

Quindi risultante da questa considerazione ho pensato a come l'applicazione principale (core) potrebbe gestirlo. Ma in questo caso l'applicazione principale deve avere conoscenza delle voci di menu e dei loro tipi di calcestruzzo. Pertanto, è necessario aggiornare gli elementi offerti dai diversi moduli o utilizzare il metodo di risoluzione del contenitore IOC per distinguere tra loro risultando in una sorta di anti-pattern del localizzatore di servizi. (Iniezione del costruttore con n dipendenze delle voci di menu non mi sembra neanche corretto)

Quindi non so se questa è una domanda basata sull'opinione, ma di sicuro una domanda di design.

Cosa proporresti come soluzione o in che modo questo scenario è gestito da altre applicazioni? Qual è il modo standard per comporre il menu?

Ulteriori informazioni: Attualmente sto sviluppando un'applicazione mobile modulare con Xamarin e Prism (con DryIOC) come framework MVVM e IOC.

    
posta Creepin 03.11.2017 - 17:54
fonte

1 risposta

2

Hai considerato che il menu stesso è un modulo standalone? Devo ammettere che non so cosa intendi per "core" dell'applicazione in questo contesto, quindi non so se è necessario conoscere tutti i moduli, ma posso vedere come un menu potrebbe essere autonomo modulo la cui responsabilità è sapere come ordinare la visualizzazione degli altri moduli e può inviare eventi nel nucleo come "modulo X selezionato dall'utente" e così via.

    
risposta data 03.11.2017 - 18:49
fonte