Pattern Selection

디자인 패턴 선택 구조

디자인 패턴은 이름을 외우는 것이 아니라 생성 책임, 전역 상태, 외부 계약 변환, 이벤트 분배, 알고리즘 교체라는 문제 유형에 맞춰 선택해야 합니다.

01

문제 유형 파악

객체 생성, 인터페이스 변환, 상태 공유, 이벤트 전파, 알고리즘 교체 중 무엇인지 구분합니다.

intent
02

생성 책임 분리

구체 클래스 선택이 복잡하면 Factory로 생성 규칙을 한 곳에 모읍니다.

factory
03

계약 맞추기

외부 라이브러리나 레거시 API가 내부 계약과 다르면 Adapter로 변환합니다.

adapter
04

변화 전파

상태 변경을 여러 구독자에게 알려야 하면 Observer나 이벤트 버스를 검토합니다.

observer
05

알고리즘 교체

조건문으로 정책이 늘어나면 Strategy로 실행 규칙을 주입합니다.

strategy
Singleton
공유 인스턴스 제어 설정이나 연결 객체처럼 하나의 인스턴스가 필요할 때 쓰지만 테스트와 전역 상태 오염에 주의합니다.
남용 금지
Observer
느슨한 알림 발행자와 구독자를 분리하지만 해제와 중복 구독 관리가 필요합니다.
memory leak 한계
Strategy
정책 교체 할인, 정렬, 검증처럼 규칙이 늘어나는 곳에서 조건문을 줄입니다.
명확한 인터페이스

패턴 적용 기준

이름보다 문제 패턴 이름에 맞추기보다 실제 변경 지점과 복잡도를 기준으로 선택합니다.
과설계 방지 한 번만 쓰는 단순 코드에 패턴을 얹으면 이해 비용이 커집니다.
타입 계약 패턴의 추상 인터페이스가 실제 호출자 요구와 맞는지 확인합니다.