Usando lo stile MVC, dov'è il posto migliore dove mettere la funzionalità SQL?

3

Mi sto interrogando sulle migliori pratiche qui.

I pattern MVC (Model - View - Controller) prevedono la separazione dei componenti del programma che modellano i dati, manipolano tali modelli e li mostrano all'utente (di solito attraverso l'interfaccia utente) in qualche modo.

Che dire di una funzione che prende i dati del modello e li inserisce in un database? Ad esempio, ho un oggetto chiamato GameBoard e voglio anche la possibilità di inserire lo stato di questa scheda nel database SQL per scopi di archiviazione / storici. Ho una classe che contiene tutte le mie funzioni di query.

Ma da dove potrei chiamare queste funzioni? Questo tipo di funzionalità avrebbe più senso renderlo un metodo di GameBoard? O dovrebbe far parte delle classi del controllore?

Ad esempio, ho una classe GameBoard e una classe SQLDatasource / SQLHelper (che io chiamo i "modelli"). Le classi SQL hanno metodi che si occupano delle query e così via. In Android, ci sono anche classi di attività in cui si svolgono tutti gli "eventi" (io li chiamo i "controllori"). La "vista" avviene tramite codice che lega l'attività a qualche XML. Detto questo, di solito istanzia le GameBoard nelle classi Activity, e in questo momento chiamerò anche le funzioni di query di queste stesse classi che accettano una GameBoard come argomento.

    
posta Aruka J 28.03.2016 - 18:44
fonte

2 risposte

7

Un'architettura MVC tipica (ma semplificata) assomiglia a questa:

Database <-->  Logic Layer <--> Controller <--> View

Il tuo livello logico contiene le funzioni che chiameresti per svolgere le tue attività legate al gioco. Lo scopo di Logic Layer è tradurre le funzioni relative ai giochi in operazioni di database.

    
risposta data 28.03.2016 - 19:36
fonte
1

Un buon approccio è il pattern DAO .

Utilizza una classe DAO per entità per gestire qualsiasi funzionalità relativa a SQL.

    
risposta data 28.03.2016 - 18:52
fonte