TS · PATTERN
Strategy Pattern 런타임 교체 구조
전략 패턴은 바뀌는 알고리즘을 인터페이스 뒤로 숨기고, 컨텍스트가 구체 클래스가 아니라 공통 계약에만 의존하게 만듭니다.
결제 전략 구조
strategy
Context
ShoppingCart가 결제 흐름을 소유합니다.
Strategy interface
pay(amount) 같은 공통 메서드를 정의합니다.
CardStrategy
카드 결제 세부 구현을 캡슐화합니다.
PayPalStrategy
다른 결제 알고리즘을 같은 pay() 계약 뒤에 숨겨 호출부 분기를 줄입니다.
setStrategy
실행 시점에 사용할 전략을 바꿉니다.
context
→
interface
→
strategy A
→
strategy B
→
execute
효과
oop
분기 제거
결제 타입마다 if를 늘리는 대신 전략 클래스로 분리합니다.
확장 용이
새 결제 수단은 인터페이스 구현으로 추가합니다.
테스트
전략별 테스트와 컨텍스트 테스트를 나눌 수 있습니다.
주의
전략이 너무 단순하면 클래스 수만 늘어날 수 있습니다.