java:1个对象上的2个decorator覆盖了相同的方法

oyjwcjzk  于 2021-07-07  发布在  Java
关注(0)|答案(0)|浏览(242)

我在用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
}

如何将晕眩和治疗合二为一?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题