-4
所以我试图实现两个类之间的聚合关系。但是,我对如何用抽象类实现它感到困惑。 有什么建议吗?如何聚合抽象类?
Beverage.java
public class Beverage {
private Size size;
private SizeFactor sizeCost;
private String description;
public Beverage(){}
public Size getSize(){
return size;
}
public SizeFactor getSizeCost(){
return sizeCost;
}
public String getDescription(){
return description;
}
public void setSize(Size s){
size = s;
}
public void setSizeCost(SizeFactor cost){
sizeCost = cost;
}
public double cost(){
return sizeCost.sizeCost(size);
}
}
BeverageWithIngredient.java
public abstract class BeverageWithIngredient extends Beverage {
private Beverage drink = new Beverage();
public abstract String getDescription();
public abstract double cost();
}
基本上,这是我想要做的事:
您不应该使用'extends'进行聚合。这被认为是'有'关系,而不是'是'关系,是'扩展'意味着的。在这里阅读更多:http://beginnersbook.com/2013/05/aggregation/ – Bimde
混合* has-a *和* is-a *关系没有任何问题。此图满足修饰器模式 – k0ner
上面的图遵循装饰器模式,如k0ner所述。 – adventuredoge