我正在实现一个数据访问层(DAL),它基本上是一组具有(VB.NET)实现执行数据库(CRUD)调用的共享函数的类.我试图找出在类层次结构中调用DAL的最佳位置.让我举个例子.
假设我有一个Customer类,只有标准ID,Name,Address1等属性,可能还有一个重写的ToString函数.我还有一个带有共享方法的DAL类,例如:
(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.
现在,我可以从表示层调用Dal,如下所示:
Me.DataGridView1.Datasource = Dal.Customer.ReadList
但是,让表示层完全了解Dal是不是一个好习惯?我应该把方法放在Customer对象中并调用Dal,就像这样吗?
Public Function ReadList() As List(Of Customer) Return Dal.Customer.ReadList() End Sub Public Sub Create() Dal.Customer.Create(Me) End Sub
这会是"更清洁"的OOP吗?或者,让演示文稿调用Dal,传递业务对象,如前面的示例,这是可接受的做法:
Me.DataGridView1.Datasource = Dal.Customer.ReadList Dim c As New Customer c.Name = "Alpha Corporation" c.Address1 = "123 Main Street" Dal.Customer.Create(c)
感谢您的反馈意见.
您的应用程序对DAL的了解越少,那就越好。有几种方法可以做到这一点,我认为您的做法正确。我认为您可能希望研究此实现的工厂模式,因为您将能够将DAL实现隐藏在工厂后面,并从工厂返回实体和实体集合。