2012-01-30 9 views
15

Recentemente ho letto Fragments (non l'ho usato nella mia app) e ho appreso che può essere utilizzato nello sviluppo di app per telefoni.Pattern di progettazione MVC per lo sviluppo di app Android utilizzando Frammenti come visualizzazioni e attività come controller

Sto pensando di utilizzare Fragments per implementare il modello di progettazione MVC (model-view-controller). Molti sostengono che lo sviluppo di Android è conforme a MVC per impostazione predefinita. Ma vedo attività molto simili a Views e c'è una certa mancanza di controller quando un'altra attività è in fase di lancio. Così sto pensando di utilizzare "Frammenti" come "Viste" con un singolo "attività" come "Controller" e swap/aggiungere/rimuovere i frammenti come e quando necessario.

Quindi il mio approccio di base è così.

1) L'utente interagisce con l'interfaccia utente (Frammenti).

2) Il controller (Attività) gestisce l'evento dai Frammenti e lo passa a un modello (Backendthread/Servizio).

3) Modello (Backendthread/Servizio) notifica al controller il cambio di stato dei modelli.

4) Il controller (Attività) notifica la UserInterface (Fragments) che informa l'utente inturn.

il mio approccio è un rito o un sovraccarico non necessario o la mia percezione dei frammenti è sbagliata?

Per favore chiariscimi.

+1

Mi piacerebbe vedere un esempio del codice quando si ha qualcosa di funzionante – IamStalker

risposta

22

IMHO, i frammenti sono il controller. Il cestino dei widget del frammento rappresenta la vista. Le attività sono un livello di orchestrazione, che determina quali frammenti (e relativi widget) sono necessari in una determinata circostanza (ad esempio, uno su un telefono, due su un tablet) ma con una logica aziendale limitata.

Detto questo, Android e modelli come MVC non vanno necessariamente insieme. Non penso che l'intenzione di Google fosse quella di creare un framework MVC puro.

+2

+1 per i frammenti di sviluppatori iOS ha più senso perché sono più simili a ViewControllers. Ma Activity è qualcosa di diverso ... –

+0

Concordato. Ho trovato ulteriori spiegazioni su questo argomento qui http://stackoverflow.com/questions/6245722/android-design-patterns – manjusg

+1

Grazie per questa risposta Mark. Mi hai definitivamente convinto che i miei colleghi, con un background iOS, erano sulla strada giusta. È un peccato che non ci sia un solido tutorial sul design del software Android che enfatizzi questa pratica. – Snicolas

Problemi correlati