의존성 주입과 전략패턴의 차이

김세빈·2025년 7월 2일

CS

목록 보기
17/22

전략 패턴과 의존성 주입의 차이와 공통점

개발을 하다 보면, “무언가를 쉽게 교체하고 싶다”라는 욕구가 자주 생긴다. 이럴 때 많이 언급되는 개념이 바로 전략 패턴의존성 주입(DI) 이다.

둘 다 쉽게 교체가 가능하다는 점에서 비슷하게 느껴질 수 있다. 하지만 본질적으로 목적과 사용 방식, 그리고 적용되는 맥락이 다르다.


전략 패턴이란?

전략 패턴은 행위(Behavior)에 기반한 디자인 패턴이다.
어떤 컨텍스트(Context) 안에서 알고리즘(혹은 행위)을 런타임에 쉽게 교체할 수 있도록 도와준다.
즉, 인터페이스를 통해 여러 전략(알고리즘, 행위 등)을 정의하고, 실제 사용하는 쪽에서는 구체적인 전략이 아니라 추상화된 전략 인터페이스에만 의존하게 된다.
필요할 때 전략을 갈아끼우듯이 교체할 수 있다.

예를 들어, 결제 방식을 신용카드, 카카오페이, 네이버페이 등으로 자유롭게 바꿔서 사용할 수 있다.


의존성 주입(DI)이란?

의존성 주입은 어떤 객체가 사용할 의존성을 직접 생성하지 않고, 외부에서 주입받는 방식이다.
쉽게 말해, 클래스 안에서 직접 new로 생성하지 않고, 누군가(프레임워크, 팩토리, 외부 코드 등)가 대신 만들어서 넣어주는 구조다.

이 역시 “무언가를 쉽게 교체한다”는 점에서 전략 패턴과 비슷해 보인다.
의존성을 바꿔치기하거나, 테스트용 목 객체로 교체할 때도 유용하다.


공통점과 차이점

둘 다 “교체 가능성”이라는 공통점이 있다.
하지만 목적과 역할이 다르다.

  • 전략 패턴은 “행위(알고리즘)” 자체를 추상화해서 런타임에 쉽게 교체하는 데 초점을 둔다.
  • 의존성 주입은 “외부 의존성(객체)”을 직접 만들지 않고 주입받음으로써, 결합도를 낮추고 유연하게 교체하는 데 초점을 둔다.

전략 패턴은 GoF(Design Patterns)에서 정의된 명확한 패턴 중 하나다.
의존성 주입은 디자인 패턴이라기보다는 설계 원칙 또는 구조에 가깝다.

0개의 댓글