<分区>
这是一个关于应该如何使用继承的简单问题。
考虑到我必须提供打印“foo”和“bar”的业务逻辑,并且我有两个类的层次结构:一个类具有仅打印“foo”的方法,另一个首先扩展并具有打印“bar”的方法'.
在这两个类中,我都有一个名为 necessaryMethod()
的方法,它负责调用打印“foo”和“bar”的那些方法。
我的实现方式有两种:
第一种方法是让基类做一些事情,派生类利用它。第二种方法是让基类不做任何事情(只提供实现)并将所有责任交给派生类。
考虑以下代码:
方法一:
public class A{
protected void necessaryMethod(){
callFoo();
}
protected void callFoo(){
System.out.pritln("foo");
}
}
public class B extends A{
@Override
protected void necessaryMethod(){
super.necessaryMethod();
callBar();
}
protected void callBar(){
System.out.println("bar");
}
}
public class FooBarClass{
public static void main(String args[]){
B b = new B();
b.necessaryMethod();
}
}
方法 2:
public abstract class A{
protected abstract void necessaryMethod();
protected void callFoo(){
System.out.pritln("foo");
}
}
public class B extends A{
@Override
protected void necessaryMethod(){
calFoo();
callBar();
}
protected void callBar(){
System.out.println("bar");
}
}
public class FooBarClass{
public static void main(String args[]){
B b = new B();
b.necessaryMethod();
}
}
哪种方法对代码的可维护性和可读性更好(在大型软件产品/大类层次结构的上下文中;这只是一个示例)?
(这是一个一般的编程问题,我没有征求意见。)