2012-05-28 110 views
3

我正在學習Play框架。我cunfused關於三類代表倉庫庫存項目 - 產品數據模型:彼此依賴的Java類

public class Product { 
    public Long ean; 
    public String name; 
    public String description; 
    public String toString() { 
    return name; 
    } 
} 

public class Warehouse { 
    public String name; 
    public List<StockItem> stock = new ArrayList<>(); 
    public String toString() { 
    return name; 
    } 
} 

public class StockItem { 
    public Warehouse warehouse; 
    public Product product; 
    public Long quantity; 
    public String toString() { 
    return String.format("%d %s", quantity, product); 
    } 
} 

倉庫取決於類StockItem。類別StockItem取決於類別產品倉庫

如何理解這種關係?

回答

4

Warehouse是一個容器類,它有很多項目 - StockItem's。所以Warehouse知道約StockItem和每個StockItem知道它是什麼Warehouse它屬於。
喜歡的東西:

Warehouse warehouse = new Warehouse(); 
StockItem item1 = new StockItem(); 
item1.warehouse = warehouse; 
warehouse.stock.add(item1); 
1

倉庫包含許多StockItems。雖然檢查沒有完成,但StockItem只能屬於一個倉庫。 (倉庫1 ---很多StockItem)

StockItem是特定產品(它不能同時是2種類型!!!)。 (StockItem很多 - 1產品:請注意,您可以擁有相同產品的很多StockItem對象)

1

類倉庫取決於類StockItem。類StockItem依賴於產品和倉庫類。

Warehouse實現提到StockItem

public class Warehouse { 
    ... 
    public List<StockItem> stock = new ArrayList<>(); 
    ... 
} 

因此對類依賴。如果沒有StockItem,您將無法編譯和使用Warehouse。這就是關係如何被理解的。

也是一樣StockItem VS ProductWarehouse

public class StockItem { 
    ... 
    public Warehouse warehouse; 
    public Product product; 
    ... 
} 

沒有Product你將無法編譯和使用StockItem

+0

「如果沒有StockItem,你將無法編譯」 - >也許你應該提到沒有** class **'StockItem'的情況,你不能編譯你的代碼。因爲您可以在沒有'StockItem'對象的情況下進行編譯。最後一行同樣如此:「沒有'Product'」 - >沒有** class **'Product' –