我一直在使用委托模式将工厂创建的对象包装在 3rd 方库中。最近,该库在基类中添加了一个受保护的方法,我的包装类不再起作用。有没有人在不诉诸反思的情况下有一个好的解决方案?
这是在 3rd 方库和他们的包中,
public class Base {
public void foo();
protected void bar(); // Newly added
}
这是在我自己的包裹里,
public class MyWrapper extends Base {
private Base delegate;
public MyWrapper(Base delegate) {
this.delegate = delegate;
}
public void foo() {
delegate.foo()
}
protected void bar() {
// Don't know what to do
}
}
编辑:我原来的帖子不清楚。这两个类在不同的包中。
回答为什么我需要授权的问题。这是委托/包装模式的一个典型用例,我不能在这里用几行代码来展示它。该库公开了 Base 类,但其工厂的实际对象是 Base 的派生类。实际的类会根据配置而变化。所以我不知道代表是什么。因此直接继承模式在这里不起作用。