패스잇
CS 기초 · 기초

스트래티지(Strategy) 패턴은 다양한 알고리즘을 유연하게 교체해야 할 때 어떻게 활용될 수 있는지 설명해주세요.

힌트 · 알고리즘 군을 정의하고 각각을 캡슐화하여 서로 교환 가능하게 만듭니다. 런타임에 클라이언트가 특정 알고리즘을 선택하여 사용할 수 있도록 합니다.

알고리즘 교체캡슐화Context인터페이스유연성

모범답안

스트래티지 패턴은 여러 알고리즘을 상황에 따라 유연하게 바꿔 써야 할 때 유용합니다. 핵심은 알고리즘들을 각각 독립적인 클래스로 캡슐화하고, 이 클래스들이 동일한 인터페이스를 구현하도록 하는 겁니다.

예를 들어, 이미지 압축 프로그램을 만든다고 가정해 볼게요. 압축 방식에는 JPEG, PNG, GIF 등 여러 가지가 있을 수 있습니다. 스트래티지 패턴을 사용하면 각 압축 알고리즘을 별도의 클래스로 만들고, 압축 방식을 선택하는 코드를 런타임에 결정할 수 있습니다.

클라이언트는 구체적인 알고리즘 대신 인터페이스를 통해 압축 기능을 사용하므로, 새로운 압축 알고리즘이 추가되거나 기존 알고리즘이 변경되어도 클라이언트 코드를 수정할 필요가 없어집니다. 이렇게 알고리즘을 캡슐화하고 교체 가능하게 만들어서 코드의 유연성과 확장성을 높일 수 있습니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 디자인 패턴 면접 질문

← 디자인 패턴 면접 질문 전체 보기