gpt4 book ai didi

Java 装饰器模式 : Can I decorate a protected method?

转载 作者:搜寻专家 更新时间:2023-10-31 20:06:21 25 4
gpt4 key购买 nike

我想装饰(装饰器设计模式)一个公共(public)基类,但我需要装饰的方法是 protected 。参见示例:

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

子类旨在覆盖 doAct(),我需要在那里注入(inject)一些功能。我可以覆盖 doAct,但我的装饰器类无法访问正在装饰的实例上的 protected 方法 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
}

这个挑战有一些解决方案吗?

最佳答案

如果将 AbstractActorActorDecorator 放在同一个包中,您将能够访问 protected 方法。

关于Java 装饰器模式 : Can I decorate a protected method?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5742900/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com