CS 기초 · 기초
스트래티지(Strategy) 패턴은 다양한 알고리즘을 유연하게 교체해야 할 때 어떻게 활용될 수 있는지 설명해주세요.
힌트 · 알고리즘 군을 정의하고 각각을 캡슐화하여 서로 교환 가능하게 만듭니다. 런타임에 클라이언트가 특정 알고리즘을 선택하여 사용할 수 있도록 합니다.
알고리즘 교체캡슐화Context인터페이스유연성
모범답안
스트래티지 패턴은 여러 알고리즘을 상황에 따라 유연하게 바꿔 써야 할 때 유용합니다. 핵심은 알고리즘들을 각각 독립적인 클래스로 캡슐화하고, 이 클래스들이 동일한 인터페이스를 구현하도록 하는 겁니다.
예를 들어, 이미지 압축 프로그램을 만든다고 가정해 볼게요. 압축 방식에는 JPEG, PNG, GIF 등 여러 가지가 있을 수 있습니다. 스트래티지 패턴을 사용하면 각 압축 알고리즘을 별도의 클래스로 만들고, 압축 방식을 선택하는 코드를 런타임에 결정할 수 있습니다.
클라이언트는 구체적인 알고리즘 대신 인터페이스를 통해 압축 기능을 사용하므로, 새로운 압축 알고리즘이 추가되거나 기존 알고리즘이 변경되어도 클라이언트 코드를 수정할 필요가 없어집니다. 이렇게 알고리즘을 캡슐화하고 교체 가능하게 만들어서 코드의 유연성과 확장성을 높일 수 있습니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 디자인 패턴 면접 질문
- 팩토리 메서드(Factory Method) 패턴은 언제 사용하며, 이 패턴을 적용했을 때 얻을 수 있는 장점은 무엇인가요?
- 추상 팩토리(Abstract Factory) 패턴은 팩토리 메서드 패턴과 어떻게 다르며, 어떤 종류의 문제를 해결하는 데 효과적인가요?
- 빌더(Builder) 패턴은 복잡한 객체를 생성할 때 어떤 이점을 제공하며, 일반적인 생성자(Constructor) 방식과 비교했을 때의 차이점은 무엇인가요?
- 옵저버(Observer) 패턴은 객체 간의 일대다 의존성을 어떻게 관리하며, 주로 어떤 시스템에서 효과적으로 사용될 수 있나요?
- 실무에서 Singleton 패턴을 사용할 때 발생할 수 있는 문제점(예: 테스트 용이성, 멀티스레딩 환경)과 이를 해결하기 위한 방법에 대해 설명해 주세요.
- Factory Method 패턴과 Abstract Factory 패턴은 모두 객체 생성을 추상화하지만, 목적과 적용 방식에 차이가 있습니다. 두 패턴의 주요 차이점을 설명하고, 각각 어떤 상황에 더 적합한지 구체적인 예시를 들어 비교해 주세요.