본문 바로가기
Swift

Swift에서 템플릿 메소드 패턴(Template Method Pattern)의 개념과 예제

by mr.conan 2023. 6. 15.
728x90
반응형

템플릿 메소드 패턴(Template Method Pattern)은 소프트웨어 개발에서 사용되는 디자인 패턴 중 하나입니다. Swift에서도 템플릿 메소드 패턴을 활용하여 알고리즘의 구조를 정의하고 구체적인 구현은 서브클래스에게 위임할 수 있습니다. 이 블로그 포스트에서는 템플릿 메소드 패턴의 개념을 소개하고, Swift로 구현된 예제를 통해 템플릿 메소드 패턴의 사용법을 알아보겠습니다.

 

템플릿 메소드 패턴의 개념:

템플릿 메소드 패턴은 알고리즘의 구조를 정의하고 일부 단계는 서브클래스에서 구체적으로 구현할 있도록 하는 패턴입니다. , 공통된 알고리즘 구조를 추상 클래스에 정의하고, 구체적인 구현은 서브클래스에서 담당합니다. 이를 통해 알고리즘의 일부 단계를 재정의하거나 확장할 있습니다.

 

템플릿 메소드 패턴 예제:

class AbstractClass {
    func templateMethod() {
        step1()
        step2()
        step3()
    }

    func step1() {
        fatalError("Subclasses must override this method.")
    }

    func step2() {
        fatalError("Subclasses must override this method.")
    }

    func step3() {
        fatalError("Subclasses must override this method.")
    }
}

class ConcreteClassA: AbstractClass {
    override func step1() {
        print("ConcreteClassA: Step 1")
    }

    override func step2() {
        print("ConcreteClassA: Step 2")
    }

    override func step3() {
        print("ConcreteClassA: Step 3")
    }
}

class ConcreteClassB: AbstractClass {
    override func step1() {
        print("ConcreteClassB: Step 1")
    }

    override func step2() {
        print("ConcreteClassB: Step 2")
    }

    override func step3() {
        print("ConcreteClassB: Step 3")
    }
}

위의 예제에서는 AbstractClass를 추상 클래스로 정의하고, templateMethod()를 템플릿 메소드로 구현합니다. AbstractClass에서는 step1(), step2(), step3() 메소드를 추상 메소드로 선언하여 서브클래스에서 구체적인 구현을 위임합니다.

ConcreteClassA와 ConcreteClassB는 AbstractClass를 상속받은 구체적인 클래스로, 각각의 단계에 맞게 step1(), step2(), step3() 메소드를 재정의하여 구현합니다.

사용 예시:

let concreteA = ConcreteClassA()
concreteA.templateMethod()

let concreteB = ConcreteClassB()
concreteB.templateMethod()

위의 예시에서는 ConcreteClassA ConcreteClassB 인스턴스를 생성하고, templateMethod() 호출하여 클래스의 구체적인 단계가 실행되도록 합니다.

728x90
반응형