0
私はデコレータパターンを学習しようとしています。ここには、本当にシンプルなキャラクターデザインがあります。これは、さまざまなオブジェクトをイートすることができるはずです。この問題は、文字のすべての属性が0に設定されているときに発生します。パテントデコレータのプライベート属性を0.0に設定
public abstract class Character{
private double damage;
public Character();
public void setDamage(damage){
this.damage = damage;
}
public double getDamage(){return damage;}
}
public class Human extends Character{
public Human(){
damage = 10.00;
}
}
public abstract class Object extends Character{
public abstract String getDescription();
}
public class Sword extends Object{
Character character;
public Sword(Character character){
this.character = character;
updateDamage();
}
public String getDescription(){
// Something
}
public void updateDamage(){
character.setDamage(character.getDamage() + 2.00);
}
}
これは単純な出力です。
public class Main{
public static void main(String[] args){
Character test = new Human();
System.out.printl(test.getDamage());
test = new Sword(test);
System.out.printl(test.getDamage());
}
// OUTPUT
10.0
0.0
どうしてですか?これはデコレータのパターンよりも優れた実装ですか?