MVP - Model Layer Architecture - Dove e come configurare Entità e DAO

0

Sto codificando una "piccola" applicazione usando il pattern MVP che ottiene i suoi dati da un database SQL.

Non sto usando un ORM fuori dalla scatola, e per motivi di apprendimento, sto scrivendo il mio semplice tipo di setup ORM / DAO. Sto utilizzando alcune idee da ormlite

Per quanto riguarda il livello del modello, ecco dove mi trovo:

  • DatabaseObject: (si collega al database ed esegue i comandi sql, restituisce i risultati dalle query sql)
  • DAO (collega un'entità al database.) crea la query dall'entità ed esegue l'oggetto database)
  • Entità (la cosa aziendale con proprietà che rappresentano una colonna nel database)

La mia domanda si trova nella DAO / Entity Part e qual è l'approccio giusto.

  1. Potrebbe / il DAO essere iniettato nell'entità? Per esempio. Customer.DAO.Create vs CustomerDAO(Customer).Create
  2. Con le relazioni tra database (es. clienti e ordini) l'entità cliente (cliente) deve contenere una proprietà array / raccolta degli ordini del cliente? Come dovrebbe influire sulla domanda 1? L'ordine DAO è ora nidificato in un cliente. È questo il modo giusto?
  3. Presentatore: se ho capito bene, il presentatore è "cuore" del design. Gestirà la logica dell'interfaccia utente E potrebbe fare chiamate di logica aziendale e accedere ai dati tramite il livello del modello? Per esempio. l'interfaccia utente chiama un metodo di salvataggio nel presentatore (pseudo codice):

Save()

{
model.LoadFields(view.GetFields)
modelDAO.Save(model)
}

e questa azione carica nel presentatore

    LoadCustomer()
{
    modelDAO.Load(modelID, model)
    orderDAO.Load(modelID, model.orders)
    view.field1 = model.field1
    view.field2 = model.field2
    view.field3 = model.field3
    view.fillOrdersListBox(model.orders)
}

Quanto sopra è una "buona" direzione?

    
posta GisMofx 31.05.2018 - 15:17
fonte

1 risposta

2
  1. No, è mia opinione che l'equivalente degli oggetti di accesso ai dati appartenga al Presenter. Il relatore aggiorna il modello in MVP. Questo deriva dalla mia esperienza nella codifica in C # usando MVC. In MVC, le istanze dei database e dei modelli vengono eseguite nella classe Controller.

  2. Sì, il modello del cliente ha bisogno di una matrice di proprietà degli ordini. L'effetto è su come si usa il modello. Il tuo modello è una definizione dei dati e non sarebbe il posto per il DAO. Un buon esempio di questo è il DB Microsoft Music Music Store

    namespace MvcMusicStore.Models { using System.Collections.Generic; public class Genre { public int GenreId { get; set; } public string Name { get; set; } public string Description { get; set; } public List<Album> Albums { get; set; } } }

  3. L'hai capito. Il presentatore è solitamente la parte "più pesante" del modello.

Nota: ho preso lo snippet di codice precedente da: link

    
risposta data 01.06.2018 - 19:25
fonte

Leggi altre domande sui tag