我有一個實現命令(使用命令模式)這兩個類,一類是創建片:重複代碼的命令類的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