我有一个实现命令(使用命令模式)这两个类,一类是创建片:重复代码的命令类的Java
public class CommandCreateSheet implements Command {
private Workbook workbook;
private String sheetName;
public CommandCreateSheet(Workbook workbook, String workSheetName) {
this.workbook = workbook;
this.sheetName = workSheetName;
}
@Override
public void execute() {
this.workbook.addSheet(this.sheetName);
}
@Override
public void undo() {
this.workbook.removeSheet(this.sheetName);
}
}
,另一个是删除:
public class CommandDeleteSheet implements Command {
private Workbook workbook;
private String sheetName;
public CommandDeleteSheet(Workbook workbook, String workSheetName) {
this.workbook = workbook;
this.sheetName = workSheetName;
}
@Override
public void execute() {
this.workbook.removeSheet(this.sheetName);
}
@Override
public void undo() {
this.workbook.addSheet(this.sheetName);
}
}
我怎样才能避免这个重复的代码?
谢谢!
这段代码对我来说很不错。 – YoungHobbit
您可以通过使用字段'workbook'和'sheetName'制作抽象超类来避免重复代码。如果你需要大量的子类,这可能是值得的。 –
对于这样的小代码来说,这并不值得。你仍然需要'execute'和'undo'来保持或多或少的一致性,因为它们是特定于类的,并且你仍然需要声明构造函数(因为构造函数没有被继承),所以它赢了你没有多少好处。 – RealSkeptic