我想要Decorate(装饰器设计模式)一个通用的基类,但是我需要的方法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
}
对于这个挑战有什么解决方案吗?
如果你把AbstractActor
and ActorDecorator
在同一个包中,您将能够访问受保护的方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)