我正在设计一个管理项目的软件。
该软件有多种产品类型 - 每种产品都有自己的SKU和物理属性,用户可以动态添加这些产品类型。
该软件还有项目(也动态添加) - 每个项目属于产品类型(继承其特定属性)。当用户添加他们需要能够选择产品类型的项目时,用户还可以添加其他属性,例如项目是否已损坏,打开或新建及其他属性。
在我目前的设计中,我有一个ProductType
类,其中包含产品类型所有属性的字段。我还有一个item
类,其中包含其他属性的字段。
我对如何让类Item
的对象继承类productType
的特定对象的属性感到困惑。任何意见,将不胜感激。该设计是第一次修订,因此可以很容易地进行更改。
我的第一个想法是全局存储ProductType
数组,然后在创建项目时使用函数来复制字段。这有用还是有更好的方法?
答案 0 :(得分:2)
我认为您问题的最佳解决方案是使用合成:类型是Item的属性。
public class Item () {
private final ProductType type;
// other properties
public Item(ProductType type) {
this.type = type;
}
}
答案 1 :(得分:0)
public class Item extends ProductType{}
答案 2 :(得分:0)
您不应复制字段,而应引用ProductType
。您也不应该直接访问ProductType的字段,而只能通过getter方法访问,如果您想继续"继承"在这些字段中,您应该将授权方法添加到Item
类。
public class ProductType {
private String typeName;
public ProductType(String typeName) {
this.typeName = typeName;
}
public String getTypeName() {
return this.typeName;
}
}
public class Item {
private ProductType productType;
private String itemName;
public Item(ProductType productType, String itemName) {
this.productType = productType;
this.itemName = itemName;
}
// Access to ProductType object (optional)
public ProductType getProductType() {
return this.productType;
}
// Delegated access to ProductType field
public String getTypeName() {
return this.productType.getTypeName();
}
// Access to Item field
public String getItemName() {
return this.itemName;
}
}