【发布时间】:2012-05-23 07:02:00
【问题描述】:
假设我有以下场景:
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 没有多重继承)。我也可以把最常用的实现放在超类中,只在其他类中以不同的方式实现。但是,我不会这样做,因为随着时间的推移,最常见的实现可能会随着其他类的添加而改变,此外,我想在超类中保持方法抽象。
是否有某种模式可以以“优雅的方式”解决我的问题?
【问题讨论】:
-
没有将一堆不相关的方法放在一起的模式。模式将取决于这些方法如何相互关联(模式的上下文部分)
-
如果方法不相关,但仍希望从单个类中保持对它们的引用,请使用:
single class, no inheritance and command pattern (one command object per method),您可以通过构造函数注入命令对象 -
好吧,它们并非无关。它们为客户端提供了一些必需的功能,但只是做不同的事情。
-
是什么将它们绑定在一个对象中?
标签: java