我目前是一名学习Java的学生,还没有学习任何OO设计原则。我想修改现有的类组:MathEditor,OCREditor,DataEditor,ParameterEditor。
我对继承等有所了解。但是,每个这些类都继承一个不同的父类。例如,MathEditor继承Math类,而OCREditor继承OCR类。我想为所有四个类添加一个名为changeName
的方法。 changeName
中的代码完全相同。我应该创建一个接口并使这四个类实现该接口吗?或者我应该只复制/粘贴changeName
并将其手动添加到每个类中(我觉得这不好)。
我很困惑,我不想修改太多代码并创建太多类,因为我正在修改现有代码库。
最佳答案
如果您不能让它们从同一父级继承,则可以通过组成来增强它们。创建一个类,该类可能名为EditorAssistant,该类具有changeName方法,让您的类都继承同一个接口,该接口也具有changeName方法,然后将助手的方法称为委托。
例如:
interface Editable {
void changeName(String name);
String getName();
}
class EditorAssistant implements Editable {
private String name = "";
@Override
public void changeName(String name) {
this.name = name;
}
@Override
public String getName() {
return name;
}
}
class SomethingEditor implements Editable {
private EditorAssistant assistant = new EditorAssistant();
@Override
public void changeName(String name) {
assistant.changeName(name);
}
@Override
public String getName() {
return assistant.getName();
}
}
class SomeOtherEditor implements Editable {
private EditorAssistant assistant = new EditorAssistant();
@Override
public void changeName(String name) {
assistant.changeName(name);
}
@Override
public String getName() {
return assistant.getName();
}
}
诚然,这是一个简单的例子,但是可以很好地扩展。