패스잇
CS 기초 · 심화

디자인 패턴은 코드의 구조와 유지보수성을 향상시키지만, 일부 패턴은 잘못 적용되거나 특정 상황에서 성능 오버헤드를 유발할 수 있습니다. 예를 들어, Chain of Responsibility, Decorator, Visitor 패턴 등은 런타임 시 추가적인 객체 생성이나 메서드 호출로 인해 성능 저하를 일으킬 가능성이 있습니다. 이러한 패턴들이 성능에 미칠 수 있는 부정적인 영향을 분석하고, 성능 최적화를 고려하여 패턴을 설계하거나 대안을 선택하는 방법에 대해 설명해주세요.

힌트 · 패턴 적용 시 발생하는 추가적인 객체 생성, 가상 메서드 호출, 참조 추적 등의 오버헤드를 고려해야 합니다. 캐싱, 지연 초기화, 또는 더 직접적인 구현으로 성능을 최적화할 수 있습니다.

객체 생성 비용메서드 호출 오버헤드캐싱팩토리 패턴전략 패턴

모범답안

네, 디자인 패턴의 성능 영향과 최적화 방안에 대해 말씀드리겠습니다.

Chain of Responsibility, Decorator, Visitor 패턴 등은 유연성과 확장성을 제공하지만, 말씀하신 대로 런타임 시 객체 생성이나 메서드 호출이 늘어나 성능 오버헤드를 유발할 수 있습니다. 예를 들어, Decorator 패턴은 여러 데코레이터를 중첩할 때마다 새로운 객체를 생성하고, 각 데코레이터의 메서드를 순차적으로 호출하게 됩니다.

이러한 성능 저하를 방지하기 위해 몇 가지 접근 방식을 고려할 수 있습니다. 첫째, 패턴 적용 전에 해당 패턴이 정말 필요한지, 그리고 성능에 미칠 영향을 충분히 분석해야 합니다. 둘째, 패턴을 적용하더라도 성능 최적화를 고려해야 합니다. 예를 들어, 객체 생성이 빈번하다면 팩토리 패턴을 활용하여 객체 생성을 중앙 집중화하고 재사용성을 높일 수 있습니다. 또한, 반복적인 계산 결과는 캐싱하여 불필요한 연산을 줄일 수 있습니다.

만약 패턴 적용으로 인한 오버헤드가 크다면, 전략 패턴과 같이 더 직접적이고 간단한 구현을 대안으로 고려할 수도 있습니다. 핵심은 유연성과 성능 사이의 균형을 맞추는 것입니다.

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

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

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

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