2009-12-17 55 views
0

我有以下布局:我应该围绕这个实体构建一个包装吗?

实体:

Order 
OrderItem 

DAO类:

OrderDAO 
OrderItemDAO 

所以我有POCO类和DAO类。

现在我想上面的实体封装到另一个实体,这样我就可以有这样的方法:

x.AddItem(OrderItem item) 
x.CalculateTotal(); 
x.CalculateShipping(); 
x.Charge(); 

什么将这种类型的实体被称为?厂?或者只是一个简单的包装类?

回答

2

通常情况下,我把我的代码库分为几个层次:模型层,数据访问层,经理/业务逻辑层和UI

在这种情况下,我建议留单/ OrderItem的波苏斯和创建一个OrderManager类。这将是一个无状态的单身人士,并具有AddItem(Order,OrderItem)等方法。在内部,它将处理更新模型,提交数据更改,任何事务性等细节。

+0

我喜欢这个解决方案。够优雅。虽然,有一点想知道它是否会在“经理”类和DAO层之间产生(强)耦合。 – Romain 2009-12-17 21:03:10

+0

DAO层处理加载/查询/提交,并且可以在构建期间通过接口交给管理器(在Java land中,我使用Guice进行这种注入)。我发现,如果你至少走了那么远(依赖注入),你不需要担心抽象接口,直到你真的需要,因为抽象线是很好理解的。 – Aaron 2009-12-17 21:04:58

1

它肯定不是工厂(可能是创建您的“联合”实体的对象)。可能是一个包装,是的。但为什么没有Order实体管理其OrderItem直接通过创建两者之间的关系?

0

听起来更像是一个门面模式给我。隐藏执行这些各种过程的行为的实际执行情况。或者从外行的角度来看,封装是正确的。

请看这里:http://en.wikipedia.org/wiki/Facade_pattern

相关问题