← 질문 목록
#237깊이 0
스트레티지 패턴을 사용하는 판단 기준은 무엇인가?
실행 중에 알고리즘을 선택해야 하거나, 조건문이 계속 늘어나는 구조를 제거하고 싶을 때다.
| 기준 | 조건문(if/switch) | 스트레티지 패턴 |
|---|---|---|
| 변경 빈도 | 로직 추가 시 코드 수정 | 클래스 추가로 확장 |
| 결합도 | 로직이 강하게 결합 | 인터페이스로 분리 |
| 런타임 변경 | 불가능 또는 어려움 | 동적으로 교체 가능 |
상위 클래스나 클라이언트가 구체적인 구현체에 의존하지 않게 한다. 인터페이스에 의존하면 기존 코드를 고치지 않고 전략을 추가할 수 있다.
객체 내부의 상태에 따라 동작을 바꿔야 할 때 유용하다. 예를 들어 결제 수단이 카드, 페이, 계좌이체로 늘어날 때 각각의 전략 클래스로 분리하면 유지보수가 쉽다.
다만 전략의 개수가 너무 적거나 거의 바뀌지 않는다면 오히려 클래스 수가 늘어나 구조가 복잡해지는 오버헤드가 발생한다.