相互依赖的Java类

相互依赖的Java类,java,oop,Java,Oop,我正在学习游戏框架。我对表示仓库库存项目产品数据模型的三个类进行了介绍: 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<St

我正在学习游戏框架。我对表示仓库库存项目产品数据模型的三个类进行了介绍:

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);
  }
}
公共类产品{
公共长廊;
公共字符串名称;
公共字符串描述;
公共字符串toString(){
返回名称;
}
}
公共类仓库{
公共字符串名称;
public List stock=new ArrayList();
公共字符串toString(){
返回名称;
}
}
公共类库存项目{
公共仓库;
公共产品;
公众长期数量;
公共字符串toString(){
返回字符串。格式(“%d%s”,数量,产品);
}
}
类仓库取决于类StockItem。类别库存项目取决于类别产品和仓库


如何理解这种关系

仓库包含许多库存物品。虽然未进行检查,但库存项只能属于一个仓库。(仓库1--多个库存项目)


库存商品属于特定产品(不能同时为两种类型!!!)。(StockItem many--1个产品:请注意,同一产品可以有很多StockItem对象)

Warehouse
是一个容器类,它有许多项目-
StockItem
。所以
仓库
知道
库存项目
,每个
库存项目
都知道它属于什么
仓库

比如:

Warehouse warehouse = new Warehouse();
StockItem item1 = new StockItem();
item1.warehouse = warehouse;
warehouse.stock.add(item1);
类别仓库取决于类别库存项目。类别库存项目取决于类别产品和仓库。

仓库
的实施提到了
库存项目

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

如果没有
产品
您将无法编译和使用
库存项目

“如果没有库存项目,您将无法编译”->也许您应该提到,如果没有类
库存项目
,您将无法编译代码。因为您可以不使用
StockItem
对象进行编译。最后一行也是一样:“不带
产品”
“->不带类
产品”
public class StockItem {
    ...
    public Warehouse warehouse;
    public Product product; 
    ...
}