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