Шаблон Java Decorator: Могу ли я украсить защищенный метод?

Я хочу украсить (шаблон проектирования Decorator) общий базовый класс, но метод, который мне нужен для Decorate , защищен. См. Пример:

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

Подклассы предназначены для переопределения 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
}

Есть ли какое-нибудь решение этой проблемы?

5
задан p27 21 April 2011 в 10:56
поделиться