Topic

Strategy Pattern(전략 패턴)

JackerLab 2026. 6. 13. 07:54
728x90
반응형

개요

Strategy 패턴은 동일한 문제를 해결하는 다양한 알고리즘을 각각 독립적인 객체로 캡슐화하고, 실행 시점에 동적으로 교체할 수 있도록 하는 행위(Behavioral) 디자인 패턴이다. 코드 변경 없이 알고리즘을 유연하게 변경할 수 있어 유지보수성과 확장성이 뛰어나다.


1. 개념 및 정의

Strategy 패턴은 알고리즘을 클래스 단위로 분리하고, 이를 인터페이스로 추상화하여 클라이언트가 런타임에 원하는 전략을 선택하도록 하는 구조이다. 조건문(if-else, switch) 증가를 방지하는 대표적인 설계 기법이다.


2. 특징

항목 설명 비고
알고리즘 캡슐화 로직을 객체로 분리 유지보수 용이
동적 교체 런타임 전략 변경 유연성 증가
조건문 제거 분기 로직 감소 코드 간결

한줄 요약: 알고리즘을 분리하여 유연하게 교체할 수 있는 구조이다.


3. 구성 요소

구성 요소 설명 역할
Context 전략을 사용하는 객체 실행 주체
Strategy 알고리즘 인터페이스 공통 규약
Concrete Strategy 실제 알고리즘 구현 로직 담당

한줄 요약: 실행 객체와 알고리즘을 분리한 구조이다.


4. 기술 요소

기술 설명 특징
인터페이스 기반 설계 전략 추상화 결합도 감소
DI(의존성 주입) 전략 주입 유연성 확보
다형성 다양한 전략 지원 확장성 증가

한줄 요약: DI와 다형성을 활용한 유연한 구조이다.


5. 장점 및 이점

장점 설명 효과
확장성 새로운 전략 추가 용이 OCP 준수
유지보수성 코드 변경 최소화 안정성 향상
테스트 용이 전략별 테스트 가능 품질 개선

한줄 요약: 변화에 강한 구조를 제공한다.


6. 주요 활용 사례 및 고려사항

활용 사례 설명 고려사항
결제 시스템 다양한 결제 방식 클래스 증가
정렬 알고리즘 상황별 알고리즘 선택 관리 비용
게임 AI 행동 전략 변경 설계 복잡성

한줄 요약: 유연하지만 전략 수가 많아지면 관리가 어려울 수 있다.


7. 결론

Strategy 패턴은 알고리즘 변경이 잦은 시스템에서 매우 유용한 설계 패턴으로, 코드의 유연성과 확장성을 크게 향상시킨다. 특히 조건문 중심 구조를 객체지향적으로 개선할 수 있으며, 현대 소프트웨어 아키텍처에서 필수적인 패턴 중 하나이다.

728x90
반응형