Modelli di modelli di modelli in MVC

0

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.

    
posta keelerjr12 09.06.2017 - 00:06
fonte

1 risposta

1

Un modo approssimativo per isolare componenti è osservare le tue classi:

  1. sono nel modello, classi che implementano la logica di business e non mostrano nulla né richiedono input
  2. sono le classi controller, quelle che agiscono sul modello (in molti casi queste classi ricevono input dall'utente e quindi attivano azioni sul modello)
  3. sono classi di visualizzazione, classi che mostrano / rappresentano semplicemente informazioni dal modello. Le informazioni potrebbero essere recuperate dalla vista o spinte dal modello in base al tipo di MVC necessario.

Una finestra, potrebbe non essere una vista ma un contenitore per una vista, o un contenitore per un controller (pulsante per esempio).

    
risposta data 09.06.2017 - 11:37
fonte

Leggi altre domande sui tag