Sobes.tech
Back to questions
Junior — Middle
82

Можете объяснить, что означает создание экземпляра по шаблонному методу?

Companies where asked
ГК Адепт

Answer from AI

sobes.tech AI

Создание экземпляра по шаблонному методу (Template Method) — это паттерн проектирования, который определяет скелет алгоритма в базовом классе, а конкретные шаги алгоритма реализуются в подклассах.

То есть базовый класс содержит метод, который задаёт последовательность вызовов других методов (шаблон), часть из которых может быть абстрактными или виртуальными, чтобы подклассы могли их переопределить.

Пример на C++:

#include <iostream>

class AbstractClass {
public:
    void TemplateMethod() {
        Step1();
        Step2();
        Step3();
    }

protected:
    void Step1() { std::cout << "Общий шаг 1\n"; }
    virtual void Step2() = 0; // Шаг, который реализует подкласс
    void Step3() { std::cout << "Общий шаг 3\n"; }
};

class ConcreteClass : public AbstractClass {
protected:
    void Step2() override {
        std::cout << "Конкретная реализация шага 2\n";
    }
};

int main() {
    ConcreteClass obj;
    obj.TemplateMethod();
    return 0;
}

В этом примере TemplateMethod задаёт порядок вызова шагов, а конкретный шаг Step2 реализуется в подклассе. Это позволяет переиспользовать структуру алгоритма и изменять детали в подклассах.