Ho letto nel libro "Best Practice Android" rilasciato di recente che un buon modello di progettazione da utilizzare per la programmazione Android è MVVM. Avendolo provato personalmente nel mio ultimo progetto, sembra che sia utile separare il codice in sezioni più gestibili.Modello di progettazione MVVM per Android
La vista gestisce solo la creazione di elementi di visualizzazione e un'interfaccia a un ViewModel. ViewModel implementa l'interfaccia e gestisce le operazioni sulla vista e l'interazione con il modello. Il codice di esempio qui di seguito:
Modello
public class MyModel{
public String myString;
public MyModel(String myString){
this.myString = myString;
}
}
View
public class MyActivity{
public ViewManager delegate;
public interface ViewManager{
void registerTextView(TextView tvText);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity);
delegate = new ViewController(this);
TextView tvText = (TextView) view.findViewById(R.id.tvText);
delegate.registerTextView(tvText);
}
}
ViewModel
public class ViewController implements MyActivity.ViewManager{
Context activity;
TextView tvText;
MyModel myModel;
public ViewController(Context app_context){
activity = app_context;
myModel = new MyModel("Hello World");
}
@Override
public registerTextView(TextView tvText){
this.tvText = tvText;
tvText.setText(myModel.myString);
}
}
Tuttavia, non ho visto questo approccio in qualsiasi altro luogo in linea e non riesco a trovare molte informazioni che lo supporta essendo un buon modello di design per Android. Ho anche alcune domande come:
Se si dispone di un ViewModel separato per ogni frammento o solo attività?
Questo approccio funziona bene sul cambio di configurazione e sulla ricreazione delle attività con l'overhead aggiuntivo di un'altra classe? Puoi trasmettere il contesto alla tua attività per abilitare l'uso di fragmentManager?
In che modo questa scala come codice diventa più complessa?
Qualcuno ha esperienza con questo modello di progettazione con Android o qualcuno potrebbe indicarmi la direzione di un buon materiale di studio prima di iniziare a convertire tutti i miei progetti in MVVM ???
Puoi fare quello che vuoi con il tuo codice, non esiste uno standard. Personalmente non uso questo tipo di schema; a meno che non ne abbia bisogno per qualche ragione, sento che aggiunge solo astrazioni inutili. – Karakuri