[英]Same implementation in different subclasses
说我有以下情况:
abstract class A {
abstract method1();
abstract method2();
}
class B extends A {
method1() {
// implementation 1
}
method2() {
// implementation 3
}
}
class C extends A {
method1() {
// implementation 1
}
method2() {
// implementation 4
}
}
class D extends A {
method1() {
// implementation 2
}
method2() {
// implementation 4
}
}
底线:同一类的几个子类,对不同的方法使用不同的方法实现。
问题是我在不同的子类中具有相同的实现。 我的问题是如何处理这些常见的实现?
做到这一点的逻辑方法是创建另一个抽象级别,但是只有在我使用一种具有通用实现的方法时才有效(因为Java没有多重继承)。 我还可以将最常用的实现放在超类中,而仅在其他类中以不同的方式实现。 但是,我不会这样做,因为随着时间的推移,最常见的实现可能会随着其他类的添加而发生变化,此外,我想将方法抽象化为超类。
是否有某种模式可以“优雅地”解决我的问题?
您正在遇到经典的OOP问题,继承层次结构变得笨拙:-)
我建议的解决方案:
我会建议组成。 考虑以下:
interface I1 {
method1();
}
abstract class A implements I1{
abstract method1();
abstract method2();
}
class CommonOperations implements I1 {
method1() {
// implementation 1
}
}
class B extends A {
CommonOperations common;
method1() {
common.method1();
}
method2() {
// implementation 3
}
}
class C extends A {
CommonOperations common;
method1() {
common.method1();
}
method2() {
// implementation 4
}
}
class D extends A {
method1() {
// implementation 2
}
method2() {
// implementation 4
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.