[kotlin] 코틀린으로 구현하는 전략 디자인 패턴 예제

전략 디자인 패턴은 알고리즘을 캡슐화하고, 실행 중에 알고리즘을 선택할 수 있는 디자인 패턴입니다. 코틀린을 사용하여 전략 디자인 패턴을 구현하는 예제를 살펴보겠습니다.

전략 디자인 패턴

전략 디자인 패턴은 행위 디자인 패턴의 한 종류로, 알고리즘군을 정의하고 각 알고리즘을 캡슐화하여 상호교환 가능하도록 만듭니다. 실행 중에 알고리즘을 쉽게 변경할 수 있으며, 구현 세부사항을 클라이언트로부터 숨길 수 있습니다.

코틀린으로 전략 디자인 패턴 구현하기

// 전략을 나타내는 인터페이스
interface Strategy {
    fun executeStrategy()
}

// 구체적인 전략 구현
class StrategyA : Strategy {
    override fun executeStrategy() {
        println("전략 A 실행")
    }
}

class StrategyB : Strategy {
    override fun executeStrategy() {
        println("전략 B 실행")
    }
}

// 전략을 사용하는 컨텍스트
class Context(private val strategy: Strategy) {
    fun execute() {
        strategy.executeStrategy()
    }
}

fun main() {
    val contextA = Context(StrategyA())
    val contextB = Context(StrategyB())

    contextA.execute()
    contextB.execute()
}

위 코드에서는 먼저 Strategy 인터페이스를 정의하고, 각각의 구체적인 전략을 나타내는 StrategyAStrategyB 클래스를 구현합니다. 그리고 Context 클래스를 사용하여 전략을 실행합니다.

이제 실행해보면 “전략 A 실행”과 “전략 B 실행”이 순서대로 출력됩니다.

이 예제에서는 간단한 두 가지의 전략을 구현했지만, 전략 디자인 패턴을 사용하면 알고리즘을 쉽게 추가하고 변경할 수 있습니다.

결론

코틀린을 사용하여 전략 디자인 패턴을 구현하는 방법에 대해 살펴보았습니다. 이 패턴을 사용하면 알고리즘을 캡슐화하여 유연한 프로그램을 작성할 수 있으며, 코드를 재사용하고 확장하기 쉽습니다.

참고문헌: refactoring.guru