我有一个项目,我需要在java中使用产品制作erp系统。所以我们说我们有一个灯作为产品,这个灯由螺丝,灯泡等部件组成。 所以我的第一个猜测是使用Treeset并将这些部分放在每个产品树集中。但我只有一类产品,所以如果我制作一个新产品,我该如何为这个新产品提供一套呢?
以下是来自specificoc类产品的代码
private String productID;
private String productName;
private double productPrice;
public ArrayList<Products> prod = new ArrayList<>();
public Products(String productID,String productName, double productPrice)
{
this.productName = productName;
this.productID = productID;
this.productPrice = productPrice;
}
答案 0 :(得分:1)
注意:此答案已被编辑。它最初建议克隆存储在地图中的产品,但由于担心膨胀,这被改为使用单身人士。
如果产品类有子产品(部件)列表,那么每个子部件都有一个部件列表。
要获取产品的直接子项,您可以使用getPartIDs()方法,该方法仅返回childPartID列表中的元素。 要获取构成此产品的所有部件,您可以使用getAllComponentIDs()方法,该方法将递归遍历子部件列表并返回包含所有部件的列表。
创建产品后,我建议您按名称将其存储在地图中。我目前假设每种产品的单件都是可以接受的。然后,您将处理productID和计数而不是产品的实例。
这看起来像下面这样(注意它只是伪编码,它不会编译):
protected Hashtable<String,Product> productsMap;
public static void CreateProductType(String productId, String productName, dobule ProductPrice, String[] partProductIDs)
{
// TODO: error case checking
Product newProduct = new Product(productID, productName, double productPrice, partProductNames)
productsMap.add(productID, newProduct);
}
protected Product(String productID,String productName, double productPrice, String[] partProductIDs)
{
this.productName = productName;
this.productID = productID;
this.productPrice = productPrice;
}
public String[] getPartIDs()
{
return partProductIDs;
}
public static String[] getPartIDs(String productID)
{
Product p = productsMap.get(productID);
return p.partProductIDs();
}
public static String[] getAllComponentIDs(String productID)
{
Product p = productsMap.get(productID);
String[] parts = p.getPartIDs();
foreach (String productId : parts) {
// add all child component ids to an array/list and return it
}
}
答案 1 :(得分:1)
你应该使用地图作为建议的pulekies,但不是按照他建议的方式。每个产品都可以包含其子女的地图。不确定为什么你提到膨胀你的数据库因为这是关于参考。没有涉及对象的克隆。
private String productID;
private String productName;
private double productPrice;
public Hashtable<String,Product> childProducts;
public Products(String productID,String productName, double productPrice)
{
this.productName = productName;
this.productID = productID;
this.productPrice = productPrice;
}
public Products(String productID,String productName, double productPrice, Products[] newChildProducts)
{
this.productName = productName;
this.productID = productID;
this.productPrice = productPrice;
AddChildProducts(newChildProducts);
}
public String GetProductID()
{
return productID;
}
public void AddChildProduct(Product product)
{
InitializeChildProducts();
childProducts.put(product.GetProductID(),product);
}
private void InitializeChildProducts()
{
if (childProducts == null)
{
childProducts = new Hashtable<String,Product>();
}
}
public void AddChildProducts(Product[] products)
{
InitializeChildProducts();
for (Product prod : products)
{
childProducts.put(prod.GetProductID(),prod);
}
}
public Hashtable<String,Product> GetChildProducts()
{
InitializeChildProducts()
return childProducts;
}