代码之家  ›  专栏  ›  技术社区  ›  HardCode

OOP-在哪里调用数据访问层?

  •  7
  • HardCode  · 技术社区  · 17 年前

    我正在实现一个数据访问层(DAL),它基本上是一组具有(VB.NET)共享函数的类,用于实际执行数据库(CRUD)调用。我正试图找出在类层次结构中调用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
    

    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)
    

    感谢您的反馈。

    3 回复  |  直到 17 年前
        1
  •  5
  •   Andrew Hare    17 年前

    factory pattern 因为您将能够将DAL实现隐藏在工厂后面,并从工厂返回实体和实体集合。

        2
  •  3
  •   duffymo    17 年前

    我认为它们应该属于服务层。服务实现使用模型对象和持久层来实现其目标。无论是基于XML的web服务还是本地接口,服务都是映射到用例并了解工作单元的对象。

    要么将数据库调用放入单独的持久层,要么将它们嵌入模型对象中,以获得额外的面向对象纯度。

        3
  •  2
  •   marc_s MisterSmith    10 年前

    SearchList-返回事物列表,您的SQL查询在此处。此外,这可能表现得像具有Next()、Eof()和CurrentRecord类型成员的RecordSet

    boCustomer继承自BusinessObject

    searchlistCustomer继承自通过抽象方法或接口公开的searchlist,类似于: