假设我有以下情况:
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 没有多重继承)。我也可以把最常用的实现放在超类中,只在其他类中以不同的方式实现。但是,我不会这样做,因为随着时间的推移,最常见的实现可能会随着其他类的添加而改变,此外,我想在超类中保持方法抽象。
是否有某种模式可以以“优雅的方式”解决我的问题?