문제에 맞는 올바른 패턴(또는 패턴 없음)을 선택하려면 문제를 깊이 이해하고, 패턴과 그 트레이드오프를 알며, 이점을 복잡성과 견주어 판단을 적용해야 합니다. 목표는 패턴을 자기 자신을 위해 사용하는 것이 아니라 문제를 잘 해결하는 것입니다.
패턴이 아니라 문제에서 시작하라
✓ 먼저 문제를 이해하라 → 실제 이슈가 무엇인가? (패턴을 고르는 것으로 시작하지 마라)
✓ 필요한 것을 식별하라 → 유연성? 분리? 확장성? 더 단순한 생성?
✓ 그 다음 물어라: 패턴이 이 문제를 잘 다루는가? (아니면 단순한 해결책이 더 나은가?)
→ 패턴 우선이 아니라 문제 우선 → 패턴 강제를 피하라
패턴을 문제에 맞춰라
어떤 패턴이 어떤 문제에 맞는지 인식하라:
→ 하나의 인스턴스가 필요? → Singleton (또는 DI/모듈 — 대안 고려)
→ 객체 생성을 분리? → Factory; 복잡한 구성? → Builder
→ 교체 가능한 알고리즘 / 조건문 제거? → Strategy
→ 여럿에게 변경을 통지? → Observer; 감싸서 행위 추가? → Decorator
→ 호환되지 않는 인터페이스? → Adapter; 서브시스템 단순화? → Facade
→ 액션 실행 취소/큐잉? → Command; 접근 제어? → Proxy
→ 패턴의 의도(각각이 해결하는 문제)를 알아 맞춤을 인식하라
