Java Decorator模式:我可以装饰受保护的方法吗?

Dav*_*rks 5 java design-patterns decorator

我想装饰(装饰器设计模式)一个公共基类,但我需要装饰的方法受到保护.见例子:

public class AbstractActor {
   public void act(){...}      //Delegates its actions to doAct() based on some internal logic
   protected void doAct(){...}
}
Run Code Online (Sandbox Code Playgroud)

子类意味着重写doAct(),我需要在那里注入一些功能.我可以覆盖doAct,但我的装饰器类无法访问正在装饰的实例上的受保护方法doAct().例:

public class ActorDecorator extends AbstractActor {
   AbstractActor decoratedInstance;
   public ActorDecorator(AbstractActor decoratedInstance){
      this.decoratedInstance = decoratedInstance;
   }
   protected void doAct(){
      //Inject my code
      decoratedInstance.doAct();    //Can't call protected method of decoratedInstance
   }
   //Other decorator methods
}
Run Code Online (Sandbox Code Playgroud)

这个挑战有解决方案吗?

dar*_*ioo 6

如果您放入AbstractActorActorDecorator使用相同的包,则可以访问受保护的方法.