
public class Mocha extends CondimentDecorator {
public Mocha(Beverage beverage) {
this.beverage = beverage;
}
public String getDescription() {
return beverage.getDescription() + "
、モカ
";
}
public double cost() {
return beverage.cost() + 0.20;
}
}
コンディメントをコーディングする
Decorator
パターンのクラス図を見返してみると、抽象コンポーネント(
Beverage
)、具象
コンポーネント(
HouseBlend
)、抽象デコレータ(
CondimentDecorator
)を書いたこと
がわかります。次に具象デコレータを実装します。以下は
Mocha
のコードです。
Mocha
はデコレータなので、
CondimentDecorator
を拡
張して作成します。
Beverage
への参照を持つ
Mocha
をインス
タンス化します。
このクラスは、ラップされる飲み物を保持す
る
Beverage
インスタンス変数を継承します。
このインスタンス変数にラップされるオブ
ジェクトを設定します。ここでは、ラップさ
れる飲み物をデコレータのコンストラクタに
渡します。
ここでは飲み物とモカの料金を計算する必要があります。
まず装飾するオブジェクトにこの呼び出しを委譲してその
オブジェクトがラップされる飲み物の料金を計算してか ...