【发布时间】:2021-04-08 19:26:59
【问题描述】:
我有一个抽象类,如下所示。对于这个抽象类,我有 2 个具体类。我的问题是其中 1 个具体类需要实现 class2 不需要的方法。所以我不想在抽象类中调用该方法,因为并非所有的混凝土都依赖于它。但是调用代码会调用抽象类中的execute()方法。它是程序的入口点。我的问题是我将如何重构它
Abstract class A{
abstract void doOne();
abstract void doTwo();
public void execute(){
//.... Lots of common code used by both Class1 and Class2
doOne();
//....
doTwo()
//...
//Method should only be implemented by Class 1 and not by Class 2
CallOnlyClass1()
}
}
Class class1 extends A{
}
Class class2 extends A{
【问题讨论】:
-
在类 1 中,重写方法,并在其中调用
super版本。然后只做它应该做的事情。 -
class2仍然可以拥有该方法,但主体为空。这通常被称为a template method(尽管它通常有更多的肉)。 -
好的,谢谢。我试图避免这种情况,但我想这是最好的选择
-
@Mguy 你忘了这个问题了吗? :P
标签: java design-patterns interface abstract-class