In generale il controllore dovrebbe aggiornare il modello, che è mappato alla vista
Sembra che tu sia andato un po 'fuori strada, mescolando il tuo Modello e il Controller nella classe Album.
Sebbene questo sia un buon OOP per MVC, dovresti aggiungere una classe controller in più in cui inserisci la logica per pressioni di pulsanti, eventi ecc. cioè
ButtonClicked
{
//trigger non business logic event
this.ViewModel.ShowProgressBar = true
this.Album.DoThing();
this.ViewModel.AlbumData = this.Album.Data
this.ViewModel.ShowProgressBar = false
}
Se mantieni metodi di Business logic sul tuo oggetto Album, potresti eventualmente aggiungere un'altra classe AlbumViewModel per associare la vista a. Ciò può semplificare il grafico del modello di business se non corrisponde a un 1-1 con la vista.
L'esposizione di un oggetto di basso livello come un set di dati come un modello non è una grande idea, a meno che tu non veda usa un componente che lo consuma direttamente, ad esempio un grafico o una griglia. Anche allora probabilmente stai meglio con un oggetto, dato che vorrai degli extra come xAxis legend, sortedByCol etc
Il mio consiglio è di ricominciare da capo con una nuova classe AlbumViewModel. Metti tutto ciò che serve alla vista. Quindi crea una nuova classe AlbumController, aggiungi i tuoi modelli di business e la logica extra lì, scopri come creare il Modello di visualizzazione al verificarsi degli eventi.
Una volta che hai quegli oggetti con nome, puoi tagliare le cose indietro e decidere dove vuoi che i vari pezzi di logica vadano. Modello di business o controller.
Non toccare mai direttamente la vista. Questo dovrebbe essere fatto legando (non si dice quale framework si sta usando?)