2012-05-28 72 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' –