В двух разных классах у меня тот же код, что и ниже. Этот раздел кода позволяет мне добавить экран предупреждения, когда пользователь закрывает окно. Каков наилучший способ избежать написания одной и той же вещи дважды?Устранение дублированного кода в разных классах
public void addWindowEventHandlers() {
view.getScene().getWindow().setOnCloseRequest(new EventHandler<WindowEvent>() {
@Override
public void handle(WindowEvent event) {
Alert alert = new Alert(Alert.AlertType.CONFIRMATION);
alert.setHeaderText("You are about to exit the game.");
alert.setContentText("Are you sure?");
alert.setTitle("Warning");
alert.getButtonTypes().clear();
ButtonType no = new ButtonType("No");
ButtonType yes = new ButtonType("Yes");
alert.getButtonTypes().addAll(no, yes);
alert.showAndWait();
if (alert.getResult() == null || alert.getResult().equals(no)) {
event.consume();
}
}
});
}
Небольшое примечание: для этого проекта мне нужно работать с презентатором модели.
Извлечь метод рефакторинга: https: //refactoring.guru/smells/duplicate-code –
И если он не находится в том же классе: https://refactoring.com/catalog/replaceMethodWithMethodObject.html –
У ваших двух классов есть общий суперкласс, который вы можете изменить? Если это так, поместите функциональность в метод там и вызовите его из подклассов. –