Sobes.tech
Back to questions
Junior — Middle
64

Каким образом реализован паттерн 'Шаблонный метод' в фреймворке Spring?

Answer from AI

sobes.tech AI

В Spring паттерн "Шаблонный метод" реализован через абстрактные классы и хуки, где базовый класс определяет общий алгоритм, а подклассы переопределяют отдельные шаги. Например, в Spring Framework есть класс JdbcTemplate, который задаёт шаблон работы с JDBC: открытие соединения, выполнение запроса, обработка результата и закрытие ресурсов. Пользователь переопределяет только часть, связанную с обработкой результата (например, через RowMapper).

Пример упрощённого шаблонного метода:

public abstract class AbstractProcessor {
    public void process() {
        stepOne();
        stepTwo();
        stepThree();
    }

    protected abstract void stepOne();

    protected void stepTwo() {
        // общий шаг, может быть переопределён
        System.out.println("Default step two");
    }

    protected abstract void stepThree();
}

public class ConcreteProcessor extends AbstractProcessor {
    @Override
    protected void stepOne() {
        System.out.println("Custom step one");
    }

    @Override
    protected void stepThree() {
        System.out.println("Custom step three");
    }
}

Таким образом, Spring использует этот паттерн для инкапсуляции повторяющихся операций и предоставления точек расширения.