0

这些示例中的哪一个是公开包含特定产品的特定人员的订单集合的最佳方式,为什么?或者也许有更好的方法来一起做这件事?(对不起,我是域建模的新手)。使用 SQL 查询从数据库中提取 Orders 列表并转换为 List 集合。

一个人有一对多的订单,一个订单有一对多的产品。

1)

class Person
{
    List OrdersContaining(Product p)
    {.....}
}

2)

class Order
{
    List ForPersonContainingProduct(Person person, Product product)
    {.....}
}

2)

class Product
{
    List OrdersFor(Person p)
    {.....}
}

4

2 回答 2

1

我不会直接在封装数据的域对象本身上公开这样的方法。相反,我会使用应用于 Order 域的 DAO 模式。从本质上讲,这是您的#2的变体:

class OrderDAO {
    List<Order> listByPersonAndProduct(Person person, Product product){
        .....
    }
}

这样,您需要随时间添加的各种访问模式与 Order 域对象分离。

于 2009-06-07T14:39:20.790 回答
0

Person 仍然可以拥有一个包含所有订单的 .Orders 集合。然后当你知道你需要它时,它就变成了一个延迟加载填充这个集合的问题。像 N/Hibernate 这样的东西在这里有很大帮助。

于 2009-06-10T20:30:44.407 回答