🧩 패턴이란?
패턴(Pattern)은 반복적으로 발생하는 문제에 대한 표준화된 해결책입니다.
소프트웨어 설계에서 패턴은 경험적으로 검증된 설계의 모범 사례(Best Practice)를 추상화한 것입니다.
📌 패턴을 사용하는 이유
- 생산성 증가: 이미 검증된 구조를 사용하므로 빠르게 설계 가능
- 전문가 경험의 전달: 고급 개발자의 노하우를 문서화하여 팀 전체가 공유 가능
- 불필요한 논쟁 제거: 공통 용어와 구조를 사용하여 협업이 원활
- 품질 향상: 유지보수성과 확장성이 높은 구조 설계 가능
🧠 GoF(Gang of Four) 설계 패턴이란?
1994년에 발표된 『Design Patterns: Elements of Reusable Object-Oriented Software』에서 소개된 23가지의 객체지향 설계 패턴을 일컫습니다.
GoF 패턴은 아래와 같이 3가지 분류로 나뉩니다.
📝 GoF 패턴 설명 항목
GoF에서는 각 패턴을 아래 5가지 핵심 요소로 체계적으로 설명합니다:

-
패턴 이름과 분류
- 이름은 패턴의 의도와 본질을 요약함 (예: Strategy, Observer 등)
- 분류는 앞서 말한 Creational / Structural / Behavioral 중 하나
-
패턴의 의도(Intent)
- 패턴이 무엇을 해결하는지, 또는 무엇을 위해 사용되는지에 대한 설명
- 예: "전략 패턴은 알고리즘 군을 정의하고 각각을 캡슐화하여 교환 가능하게 만든다."
-
적용 대상(Applicability)
- 해당 패턴이 어떤 상황에서 유용한지, 문제가 어떤 조건일 때 적용할 수 있는지
- 예: "같은 기능을 수행하는 여러 알고리즘이 있고, 런타임에 이를 선택하고 싶을 때"
-
구조(Structure)
- UML 클래스 다이어그램이나 객체 다이어그램으로 표현
- 구성 요소 간의 관계를 시각적으로 설명
-
적용 시 고려 사항 및 제약 사항(Implementation, Consequences 등)
- 구현할 때 주의할 점, 언어적 제한 사항, 유연성과 단점
- 예: "Decorator 패턴은 많은 수의 작은 객체를 생성할 수 있으므로 메모리 관리에 유의해야 한다."