디자인 패턴 CS 지식백과
디자인 패턴 관련 핵심 개념을 개발자 기술 면접에서 설명할 수 있도록 문서 11편으로 정리했습니다. 각 문서는 개념, 동작 원리, 시간 복잡도와 실무 선택 기준을 함께 다룹니다.
어댑터 패턴 (Adapter Pattern)
호환되지 않는 인터페이스를 클라이언트가 기대하는 형태로 변환해 함께 동작하게 만드는 구조 패턴이다. 타깃, 어댑티, 어댑터, 클라이언트의 협력 구조와 장단점, 유사 패턴과의 차이를 정리한다.
어댑터 패턴 Java 구현 (Adapter Pattern in Java)
InputStreamReader, Arrays.asList 등 JDK 속 어댑터 사례를 살펴보고, 클래스 어댑터와 객체 어댑터 두 구현 변형의 차이와 Java에서 객체 어댑터가 선호되는 이유를 정리한다.
컴포지트 패턴 (Composite Pattern)
개별 객체와 객체 묶음을 같은 인터페이스로 다루어 트리 구조를 표현하는 구조 패턴이다. 파일과 폴더 예시 코드로 재귀 구조를 설명하고 투명성과 안전성의 트레이드오프를 다룬다.
디자인 패턴 개요 (GoF Design Patterns)
반복되는 설계 문제의 검증된 해결 구조인 디자인 패턴을 GoF의 생성, 구조, 행위 세 분류로 조망한다. 패턴 선택 기준과 오남용 경계, 면접 대비 학습 전략까지 정리한다.
팩토리 메서드 패턴 (Factory Method Pattern)
객체 생성 인터페이스를 상위 클래스에 정의하고 어떤 인스턴스를 만들지는 하위 클래스가 결정하는 생성 패턴이다. 추상 팩토리, 단순 팩토리와의 차이를 비교표로 정리한다.
옵저버 패턴 (Observer Pattern)
한 객체의 상태 변화를 의존 객체들에게 자동으로 알리는 일대다 관계를 정의하는 행위 패턴이다. 푸시와 풀 통지 방식, 메모리 누수 함정, 발행 구독 모델과의 차이를 다룬다.
싱글톤 패턴 (Singleton Pattern)
인스턴스를 단 하나만 만들어 전역 접근 지점을 제공하는 생성 패턴이다. 이중 검사 잠금과 volatile, 정적 내부 클래스, enum까지 구현 방식의 진화와 안티 패턴 논쟁을 정리한다.
SOLID 원칙 (SOLID Principles)
객체지향 설계의 다섯 원칙인 SRP, OCP, LSP, ISP, DIP를 위반 코드와 개선 코드로 각각 설명한다. 다섯 원칙이 서로 어떻게 연결되는지와 위반 신호를 표로 정리한다.
전략 패턴 (Strategy Pattern)
같은 문제를 푸는 여러 알고리즘을 클래스로 캡슐화해 런타임에 교체할 수 있게 하는 행위 패턴이다. 조건문 분기를 타입 확장으로 바꾸는 원리와 상태 패턴과의 차이를 다룬다.
템플릿 메서드 패턴 (Template Method Pattern)
알고리즘의 골격을 상위 클래스에 고정하고 일부 단계만 하위 클래스가 구현하는 행위 패턴이다. 훅 메서드, 할리우드 원칙, 전략 패턴과의 상속 대 합성 비교를 정리한다.
템플릿 메서드 패턴 Java 구현 (Template Method in Java)
final 템플릿 메서드와 protected abstract 단계로 추상 클래스를 견고하게 설계하는 방법을 다룬다. HttpServlet 등 JDK 사례와 람다 콜백 방식과의 트레이드오프를 비교한다.
디자인 패턴를 특히 많이 묻는 직군
같은 개념이라도 직군에 따라 파고드는 각도가 다릅니다. 직군별 가이드에서 어떤 질문으로 이어지는지 확인해 보세요.