Ich implementiere eine Data Access Layer (DAL), die im Grunde eine Reihe von Klassen mit (VB.NET) Shared-Funktionen ist, um die Datenbank (CRUD) -Aufrufe tatsächlich auszuführen. Ich versuche den besten Ort herauszufinden, an dem die Anrufe innerhalb der Klassenhierarchie an die DAL gerichtet werden. Lassen Sie mich ein Beispiel geben.OOP - Wo werden die Aufrufe an die Datenzugriffsebene gesendet?
Angenommen, ich habe eine Klasse Customer, mit nur Standard-ID, Name, Adresse1, usw. Eigenschaften und vielleicht eine überschriebene ToString-Funktion oder so. Ich habe auch eine DAL-Klasse mit Gemeinschafts-Methoden, wie zum Beispiel:
(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.
Nun, ich könnte die Dal von der Präsentationsschicht nennen wie so:
Me.DataGridView1.Datasource = Dal.Customer.ReadList
Allerdings ist es nicht eine gute Praxis die Präsentationsebene überhaupt auf den Dal aufmerksam machen? Sollte ich stattdessen Methoden in das Customer-Objekt setzen und den Dal so nennen?
Public Function ReadList() As List(Of Customer)
Return Dal.Customer.ReadList()
End Sub
Public Sub Create()
Dal.Customer.Create(Me)
End Sub
Wäre das "sauberer" OOP? Oder ist es akzeptabel Praxis der Präsentation ließ die Dal nennen, vorbei an den Business-Objekte wie meine vorherigen Beispiel:
Me.DataGridView1.Datasource = Dal.Customer.ReadList
Dim c As New Customer
c.Name = "Alpha Corporation"
c.Address1 = "123 Main Street"
Dal.Customer.Create(c)
Vielen Dank für Ihr Feedback.
Alle drei Befragten gaben gute Antworten, aber ich muss eine als richtig auswählen. Danke allen! – HardCode