gpt4 book ai didi

java - 将产品连接到类别

转载 作者:行者123 更新时间:2023-11-30 02:50:56 25 4
gpt4 key购买 nike

我正在编写新的 java 项目,要求表示可以属于某个类别的产品。我在项目中使用数据库,并通过外键连接产品和类别。相反,在代码中,我必须使用 SOLID 设计,但我不明白如何连接产品和类别。在第一个版本中,代码是

public class Product {
private int ID;
private String name;
private String descr;
private int stock;
private float price;
private int category;

public Product(int anID, String aName, String aDescr, int aStock, float aPrice, int aCategory) {
this.ID = anID;
this.name = aName;
this.descr = aDescr;
this.stock = aStock;
this.price = aPrice;
this.category = aCategory;
}

public int getID() { return this.ID; }

public String getName() { return this.name; }

public String getDescr() { return this.descr; }

public int getStock() { return this.stock; }

public float getPrice() { return this.price; }

public int getCategory() { return this.category; }

public void decreaseStock(int x) { this.stock -= x; }
}

public class Category {
private int ID;
private String name;
private String descr;

public Category (int anID, String aName, String aDescr) {
this.ID = anID;
this.name = aName;
this.descr = aDescr;
}

public int getID() { return this.ID; }

public String getName() { return this.name; }

public String getDescr() { return this.descr; }

}

...但我认为产品可以实现类别,以便将所有信息包含在一个对象中,而不是在两个类之间跳转...

哪种写法最好?

最佳答案

您不应该在 Java 类中逐字模仿底层数据库表结构。正确的方法以及我迄今为止所使用的每种 ORM 方法如下:

  1. Product 类存储对 Category 实例的引用。
  2. 当从数据访问层中的数据库中获取记录时,您需要显式编写代码来首先创建一个 Category 对象,然后将其传递给 Product 类构造函数创建 Product 对象时。

通过这种方式,Java 类层次结构反射(reflect)了 Product 及其相关 Category 之间的真实业务关系。这还有一个优点,即从应用程序中抽象出存储详细信息 - 考虑一下如果数据存储在 NoSQL 数据库中,您当前采用的方法会发生什么情况。但是,通过采用此答案中提出的方法,您只需要更改数据访问层即可创建正确的对象 - 您的类设计保持不变(开闭O) SOLID中的strong>原则)。

关于java - 将产品连接到类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38676138/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com