프로그래밍/GoF

[행동 패턴] - 템플릿 메서드(Template method)

MAKGA 2022. 1. 9. 13:15
320x100

구조

#pragma once

#include <iostream>

class BaseClass
{
public:
    virtual void operation1() = 0;
    virtual void operation2() = 0;

    void templateFunction()
    {
        operation1();
        std::cout << "Something" << std::endl;
        operation2();
    }
};

class DerivedClass : public BaseClass
{
    void operation1() override
    {
        std::cout << "operation1" << std::endl;
    }

    void operation2() override
    {
        std::cout << "operation2"  << std::endl;
    }
};

 

사용

int main()
{
    BaseClass* baseClass = new DerivedClass;
    baseClass->templateFunction();

    return 0;
}

 

알고리즘을 템플릿화 해서 상위 클래스에서 알고리즘의 뼈대만 정의하고, 구체적인 구현은 추상화(operation1, operation2)해서 상속을 통해 구현하는 패턴이다.

320x100

'프로그래밍 > GoF' 카테고리의 다른 글

[구조 패턴] - 브릿지(Bridge)  (0) 2022.01.10
[구조 패턴] - 어댑터(Adapter)  (0) 2022.01.10
[행동 패턴] - 방문자(Visitor)  (0) 2022.01.09
[행동 패턴] - 전략(Strategy)  (0) 2022.01.08
[행동 패턴] - 상태(State)  (0) 2022.01.08