Attualmente lavora su un'applicazione di contabilità. Ha scritto il framework della GUI da zero con Win32 e funziona bene. Il problema che sto avendo sta provando a separare la GUI dalla logica dell'applicazione. Le classi che ho implementato finora sono:
class Application
class MyApplication : public Application // Is this my controller?
class Account // Model
class Transaction // Model
class Split // Model
class Window // Is this a view? Should it hold a view?
class DataGrid : public Window // Same with this??
MyApplication ha un vettore di account con ciascun account che contiene un vettore di transazioni e gli oggetti di transazione contenenti i vettori di suddivisioni
In questo caso presumo che Account, Transaction e Split siano i miei modelli. Non voglio che la mia vista affronti direttamente questi aspetti per separare la logica, i dati e la vista.
Che cos'è esattamente il mio controller? Dovrei aggiungere una classe Accountant con cui interagiscono sia i modelli che i miei Datagrids?
Ciò significherebbe che la mia classe Datagrid o Table avrebbe bisogno di un puntatore a Accountant. La mia GUI (datagrid, window, ecc.) È abbastanza pulita ora e non voglio inquinarla con codice specifico dell'applicazione.
Come posso separare visualizzazioni e modelli? La mia classe Window tiene un puntatore a una classe ViewBase? La mia classe di finestre non dovrebbe assolutamente contenere un elenco di modelli.