전략 패턴

전략 패턴(Strategy Pattern)

특정 작업을 수행하는 다양한 방식(알고리즘)을 두고, 필요에 따라 갈아끼울수 있도록 캡슐화한 패턴

  • 즉, 어떤 일을 어떻게 할 것인가에 대한 여러 '모드'나 '알고리즘'을 각각 별도의 클래스(전략 클래스)로 만들고, 이들을 필요에 따라 선택하고 교체하여 사용

  • 전략들을 쉽게 확장하거나 변경할 수 있는 클래스들의 집합으로 캡슐화되어 있다.

  • 각 전략(알고리즘)이 별도의 클래스로 분리되어 있어, 코드가 깔끔하고 유지보수가 용이

  • 컨텍스트 클래스를 통해 코드 실행중에 동적으로 쉽게 교체하여 사용 가능

  • 새로운 방식이 필요하다면 기존 코드를 수정하지 않고 새로운 전략 클래스만 추가하여 쉽게 확장 가능

  • 분리된 전략 클래스들을 다른곳에서도 독립적으로 재사용 가능

  • SOLID 원칙중 OCP(개방-폐쇄 원칙)을 준수한 패턴

1. 인터페이스 정의

모든 전략 구상 클래스가 구현해야하는 인터페이스

interface PaymentStrategy {
  pay(amount: number): void
}

2. 구체적인 전략 정의

전략 인터페이스를 구현한 클래스들로 각기 다른 알고리즘을 포함됨

pay 메서드를 실행하는 용도로 사용됨

3. 컨텍스트 정의

전략 객체를 필드로 가지고 있으면서, 클라이언트의 요청을 전략 객체로 위임하는 클래스

4. 클라이언트 코드

Last updated