본문 바로가기
Swift

Swift에서 전략 패턴(Strategy Pattern)의 개념과 예제

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

전략 패턴(Strategy Pattern)은 소프트웨어 개발에서 사용되는 디자인 패턴 중 하나입니다. Swift에서도 전략 패턴을 활용하여 동일한 작업을 다양한 전략으로 대체할 수 있습니다. 이 블로그 포스트에서는 전략 패턴의 개념을 소개하고, Swift로 구현된 예제를 통해 전략 패턴의 사용법을 알아보겠습니다.

 

전략 패턴의 개념: 전략 패턴은 동일한 작업을 수행하는 여러 알고리즘을 정의하고, 각 알고리즘을 캡슐화하여 상호 교환 가능하도록 만드는 패턴입니다. 이 패턴은 알고리즘의 구현과 사용을 분리하여 유연하고 확장 가능한 코드를 작성할 수 있습니다. 전략 패턴은 "행동"을 객체로 캡슐화하여 동적으로 변경할 수 있게 합니다.

 

전략 패턴 예제:

protocol Strategy {
    func execute()
}

class ConcreteStrategyA: Strategy {
    func execute() {
        print("Executing strategy A")
    }
}

class ConcreteStrategyB: Strategy {
    func execute() {
        print("Executing strategy B")
    }
}

class Context {
    private var strategy: Strategy

    init(strategy: Strategy) {
        self.strategy = strategy
    }

    func setStrategy(strategy: Strategy) {
        self.strategy = strategy
    }

    func executeStrategy() {
        strategy.execute()
    }
}

위의 예제에서는 Strategy 프로토콜을 정의하고, ConcreteStrategyA와 ConcreteStrategyB 클래스가 이를 구현합니다. Context 클래스는 전략을 사용하는 클래스로, 전략을 변경하거나 실행할 수 있습니다.

 

사용 예시:

let context = Context(strategy: ConcreteStrategyA())
context.executeStrategy()

context.setStrategy(strategy: ConcreteStrategyB())
context.executeStrategy()

위의 예시에서는 Context 인스턴스를 생성하고, 초기에는 ConcreteStrategyA를 전략으로 설정하여 실행합니다. 그 후 setStrategy 메서드를 사용하여 전략을 ConcreteStrategyB로 변경하고 다시 실행합니다.

728x90
반응형