그알것 — 그럼에도 알아야 할 것들
홈질문커뮤니티
로그인
그알것 — 그럼에도 알아야 할 것들

Service

  • 홈
  • 소개
  • 질문
  • 커뮤니티

My

  • 내 워크스페이스
  • 저장한 질문
  • 작성한 답변

Policy

  • 이용약관
  • 개인정보처리방침
  • 문의

© 2026 그알것 · What Still Matters

질문 목록Architecture
Architecture

전략 패턴(Strategy Pattern)에 대해 설명해주세요.

실무4/5
설계4/5
인간4/5
기초3/5

면접관의 질문 의도

패턴 정의를 외웠는지가 아니라, 언제 조건문 대신 전략 분리를 고를지에 대한 자기 기준이 있는지 본다. "if문이 길어지면 전략 패턴" 수준에서 그치는지, 변화 축·책임 경계 같은 기준어를 들고 오는지가 가장 큰 갈림길이다.

큐레이션 답변

학습 자료

전략 패턴은 같은 목적을 가진 알고리즘·정책을 공통 인터페이스로 묶고, 런타임에 어느 구체 전략을 쓸지 갈아끼우는 패턴이다. 핵심은 "if-else로 정책을 계속 덧붙이는 코드"를 "변화 축마다 객체로 떼어내는 구조"로 바꾸는 데 있다. 컨텍스트는 전략 인터페이스에만 기대므로 새 정책을 더할 때 기존 분기 코드를 다시 깨우지 않아도 된다. 단, 전략이 두세 개뿐이거나 변화 가능성이 낮은 영역에 도입하면 추상화 비용이 도메인 이득을 못 따라잡으니, 변화 빈도와 책임 경계를 기준으로 들이느냐 마느냐를 갈라야 한다.

좋은 답변 구조

  1. 01전략 패턴의 정의와 "무엇을 분리하는 패턴인지"를 한 줄로 정리한다
  2. 02컨텍스트·전략 인터페이스·구체 전략의 역할을 짧게 풀어 설명한다
  3. 03조건문 분기 방식과 비교해 얻는 이득과 따라오는 추상화 비용을 함께 짚는다
  4. 04어떤 도메인에서 들이고, 어떤 경우에는 굳이 들이지 않는지를 자기 기준으로 답한다

자주 실수하는 포인트

전략이 두세 개뿐인 상황에도 "if문이 보이니 전략 패턴"으로 무조건 분리한다
컨텍스트가 전략 내부 상태까지 알게 만들어 책임 경계를 흐린다
컨텍스트 내부에서 구체 전략을 직접 `new` 해버려 DI/교체 가능성이라는 본래 이득을 스스로 깨뜨린다
전략의 라이프사이클(상태 보유 여부·스레드 안전성)을 생각하지 않고 싱글턴으로 박는다

실무 맥락

  • 결제 수단·정산 정책처럼 도메인 규칙이 자주 추가/변경되는 모듈
  • 할인·추천·랭킹 알고리즘을 A/B로 갈아끼우며 운영해야 하는 영역
  • 입력 검증 규칙이나 외부 연동 어댑터가 채널별로 다른 분기 구조
  • 다국가·다채널 운영으로 같은 흐름에 다른 정책이 끼어드는 서비스

본인 경험에 녹이는 힌트

if-else가 길어진 코드를 전략으로 떼어낸 경험이 있다면, 그때 무엇을 "변하는 축"으로 봤는지를 답변의 결정 기준으로 가져올 수 있다

전략을 인터페이스 단위로 테스트하면서 변경 안정성이 올라간 경험이 있다면 테스트 관점의 이득을 본인 사례로 풀 수 있다

오히려 과도한 추상화로 추적이 어려워진 경험이 있다면 "전략 패턴을 안 들이는 기준"을 본인 사례로 말할 수 있다

DI 컨테이너에서 전략 빈을 등록·선택하며 설정과 책임 경계를 정리한 경험이 있다면 컨텍스트·전략의 결합도 이야기로 자연스럽게 이어진다

커뮤니티 인기 답변

전체 0개

아직 공개된 답변이 없어요. 첫 공개 답변을 남겨보세요.

관련 꼬리 질문

Q1템플릿 메서드 패턴과의 차이는 무엇인가요
Q2전략 객체 생성 비용·재사용은 어떻게 관리하나요
Q3런타임에 어떤 전략을 고를지 결정 기준은 어디에 두나요
Q4전략이 너무 많아질 때 카탈로그를 어떻게 관리하나요
아직 답을 쓰지 않았어요.
큐레이션 답변과 다른 사람 답변을 보고, 자기 언어로 답을 정리해보면 학습 효과가 가장 큽니다.
목차
  • 01면접관의 질문 의도
  • 02큐레이션 답변
  • 03좋은 답변 구조
  • 04자주 실수하는 포인트
  • 05실무 맥락
  • 06본인 경험에 녹이는 힌트
  • 07커뮤니티 인기 답변준비중
  • 08관련 꼬리 질문