Я хочу Украсить (шаблон проектирования Decorator) общий базовый класс, но метод, который мне нужен для Украсить , защищен. Смотрите пример:
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
}
Есть ли какое-нибудь решение для этой проблемы?