Java 扩展库中类中间结构的超类
我正在使用这个库,我不得不重写一些超类中的一些方法。我现在要做的是扩展我需要的类,并重新定义我需要从它的超类重写的方法Java 扩展库中类中间结构的超类,java,design-patterns,subclass,superclass,Java,Design Patterns,Subclass,Superclass,我正在使用这个库,我不得不重写一些超类中的一些方法。我现在要做的是扩展我需要的类,并重新定义我需要从它的超类重写的方法 class A { ... } class B extends A { ... } class C extends A { ... } class myD extends B { protected void overriddenAfunction() { ... } } 当几个类扩展同一个超类,并且我希望所有子类都使用相同的重写方法时(例如,如果C也需要相
class A { ... }
class B extends A { ... }
class C extends A { ... }
class myD extends B {
protected void overriddenAfunction() { ... }
}
当几个类扩展同一个超类,并且我希望所有子类都使用相同的重写方法时(例如,如果C也需要相同的重写函数()定义),这显然是不好的
有没有什么设计模式或方法可以让它变得漂亮?我想象你可以做这样的事情:
class A { ... }
class B extends A { ... }
class C extends A { ... }
class myD extends A {
private A BorC = null;
public myD(A BorC) {
this.BorC = BorC;
}
protected void overriddenAfunction() { ... }
public void overriddenBfunction() {
((B) BorC).overriddenBfunction();
}
public void overriddenCfunction() {
((C) BorC).overriddenCfunction();
}
}
Usage:
A testB = new myD(new B());
A testC = new myD(new C());
然而,如果B和C中的每一种方法都有效的话,我就需要把它们都放进去
有没有更好的方法或解决办法?我想做的就是避免重新打包库,尽管我想这真的是最好的解决方案
我想我也可以复制B和C,让它们扩展myD,而myD扩展A。这个库还有所有可用的源文件,所以我可以这样做或做类似的事情。没有办法覆盖
A
,让B
和C
受益于新功能。你只有两个选择,我可以看到,你提到他们两个:
- 重写
并重新打包库A
- 让
扩展MyD
,然后复制扩展A
的MyD
和B
C