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
这是怎么发生的?有没有比装饰模式更好的实现呢?