-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