Sto implementando un Data Access Layer (DAL), che è fondamentalmente un insieme di classi con funzioni condivise (VB.NET) per eseguire effettivamente le chiamate del database (CRUD). Sto cercando di capire il posto migliore in cui collocare le chiamate al DAL all'interno della gerarchia di classi. Lasciatemi fare un esempio.OOP - Dove mettere le chiamate al Data Access Layer?
Supponiamo di avere un cliente di classe, con solo ID standard, nome, indirizzo1, proprietà ecc. E forse una funzione ToString sostituita. Ho anche una classe DAL con modalità condivise, come ad esempio:
(pseudocode)
Namespace Dal
Public Class Customer
Public Shared Function Read(id As Integer) As Customer
Public Shared Function ReadList() As List(Of Customer)
Public Shared Sub Create(c As Customer)
'etc.
Ora, ho potuto chiamare il Dal dallo strato di presentazione in questo modo:
Me.DataGridView1.Datasource = Dal.Customer.ReadList
Tuttavia, non è una buona pratica di il livello di presentazione è a conoscenza del Dal? Dovrei invece mettere i metodi nell'oggetto Cliente e chiamare il Dal, come questo?
Public Function ReadList() As List(Of Customer)
Return Dal.Customer.ReadList()
End Sub
Public Sub Create()
Dal.Customer.Create(Me)
End Sub
Questo dovrebbe essere "più pulito" OOP? O è pratica accettabile lasciare che la presentazione chiamare il Dal, passando gli oggetti di business come il mio precedente esempio:
Me.DataGridView1.Datasource = Dal.Customer.ReadList
Dim c As New Customer
c.Name = "Alpha Corporation"
c.Address1 = "123 Main Street"
Dal.Customer.Create(c)
Grazie per il tuo feedback.
Tutti e tre gli intervistati hanno dato grandi risposte, ma devo sceglierne una corretta. Grazie a tutti! – HardCode