0
我无法映射这些类:图案
- 订单
- 托盘
- 盒
它们一起形成的关系作文,详见this wikipedia article。
类订购的实例有几个托盘对象,其中有几个箱对象。
这是我现在有:
class Order
{
public Order(){}
private List<Pallet> _pallets = new List<Pallet>;
public Pallet Add_pallet()
{
Pallet new_pallet = new Pallet(this);
this._pallets.Add(new_pallet);
return new_pallet;
}
//...other properties and methods...
}
class Pallet
{
private Order _parent_order;
private List<Box> _boxes = new List<Box>;
public Pallet(Order parent_order)
{
_parent_order = parent_order;
}
public Box Add_Box()
{
Box new_box = new Box(this);
this._boxes.Add(new_box);
return new_box;
}
//...other properties and methods...
}
class Box
{
private Pallet _parent_pallet;
public Box(Pallet parent_pallet){}
//...other properties and methods...
}
所有盒必须属于托盘和所有托盘必须属于订购。
我怎样才能正确地执行这个可以避免这一点:
static class Program
{
static void Main()
{
Order myOrder = new Order();
Pallet myPallet = new Pallet(myOrder);
//Now I have a Pallet that belongs to an Order,
//but the Order object is not aware of it
}
}
我应该使用嵌套类,还是有我丢失的东西更有用?
您的Pallet和Box是否真的需要知道它们分别属于哪个Order和Pallet?这些循环依赖可能会给垃圾收集器带来麻烦。也许将关系簿记外包给外部实体会更好? – nullop 2014-11-21 11:06:44
这可能是一种简化事物的方式,但我仍然可以创建实际上不属于托盘的Box,并且问题仍然存在。 – 2014-11-21 11:12:46
在我看来,在这种情况下,作曲不是正确的做法。一个'Pallet' /'Box'几乎可以肯定存在,因此我认为聚合在这里更适合。 – James 2014-11-21 15:10:26