私は現在、デコレータを試しています。Tank クラスと 2 つのデコレーターを作成しました。どうぞ:
public class Tank {
public int shoot() {
return 100;
}
public int drive() {
return 10;
}
}
public class FasterTank extends Tank {
protected Tank fTank;
public FasterTank(Tank tank) {
fTank = tank;
}
public int drive() {
return fTank.drive() * 2;
}
}
public class DoubleGunTank extends Tank {
protected Tank fTank;
public DoubleGunTank(Tank tank) {
fTank = tank;
}
public int shoot() {
return fTank.shoot() * 2;
}
}
私がやろうとしているのは、1 つの戦車を 2 連装砲と超高速の両方で装飾することです。だから私はこのようにします:
Tank czolg = new Tank();
czolg = new FasterTank(czolg);
czolg = new DoubleGunTank(czolg);
System.out.println("Shoot: "+czolg.shoot());
System.out.println("Drive: "+czolg.drive());
しかし、結果は次のとおりです。
Shoot: 200
Drive: 10
DoubleGunTank クラスの両方のメソッドをアクティブにするデコレーターは 1 つだけのようです。だから私の質問は、どうすれば戦車をより強力に発射し、同時により速く走らせることができるでしょうか?