我在用java处理decorator模式时遇到了一个问题。我有两个decorator重写同一个方法,我希望它们在同一个对象上同时执行两个实现。
我想到的第一件事就是把两个装潢师合并成一个新的,但从长远来看,这可能是一个非常糟糕的主意。
解决这个问题的正确方法是什么?我需要更抽象一点,还是干脆拒绝装饰者而使用其他东西(比如战略?)
可视化问题的代码示例:
public class Attacker {
//variables, constructor...
public void attack(Object defender) {
defender.hp -= 10;
}
//other methods
}
public class HealAfterAttackDecorator extends Attacker {
//variables, consturctor...
@Override
public void attack(Object defender) {
defender -= 10;
this.heal();
}
//other overrided methods
}
public class StunDefenderAfterAttackDecorator extends Attacker {
//variables, consturctor...
@Override
public void attack(Object defender) {
defender -= 10;
attack.stun(defender);
}
//other overrided methods
}
如何将晕眩和治疗合二为一?
暂无答案!
目前还没有任何答案,快来回答吧!