티스토리 뷰
반응형
GoF 디자인 패턴
― 객체지향 설계의 핵심 구조를 정리한 23가지 패턴
1. 정의
GoF 디자인 패턴은 1994년, 『Design Patterns: Elements of Reusable Object-Oriented Software』라는 책에서 네 명의 저자(Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, 일명 Gang of Four)가 정리한 23가지 객체지향 설계 패턴을 말합니다.
이들은 다음과 같이 세 가지 범주로 나뉩니다:
범주 | 설명 |
---|---|
생성 패턴 (Creational) | 객체 생성 방식에 관한 패턴 |
구조 패턴 (Structural) | 클래스 및 객체 간 구성 방식에 관한 패턴 |
행위 패턴 (Behavioral) | 객체 간 상호작용과 책임 분배 |
2. 왜 필요한가?
이유 | 설명 |
---|---|
반복 문제 해결 | 재사용 가능한 해법을 패턴화 |
결합도 감소 | 유지보수와 테스트 용이성 확보 |
의사소통 도구 | “패턴명”으로 설계 구조를 명료하게 공유 |
확장성과 유연성 향상 | 설계 구조의 변경에 강한 구조 제공 |
OOP 원칙 반영 | 캡슐화, 상속, 다형성, 위임 등을 반영한 구조 설계 |
3. 디자인 패턴 목록
3.1 생성(Creational) 패턴
패턴 | 목적 | 설명 |
---|---|---|
Singleton | 전역 인스턴스 | 단 하나의 객체를 생성하고 어디서나 접근 가능 |
Factory Method | 생성 위임 | 객체 생성을 서브클래스에 위임 |
Abstract Factory | 관련 객체군 생성 | 관련 객체들을 일관된 방식으로 생성 |
Builder | 복합 객체 조립 | 단계별로 복잡한 객체를 조립 |
Prototype | 복제 생성 | 기존 객체를 복사하여 생성 |
3.2 구조(Structural) 패턴
패턴 | 목적 | 설명 |
---|---|---|
Adapter | 호환성 | 서로 다른 인터페이스를 연결 |
Bridge | 구현 분리 | 추상화와 구현을 독립적으로 확장 |
Composite | 트리 구조 | 단일 객체와 복합 객체를 동일하게 처리 |
Decorator | 기능 확장 | 객체에 기능을 동적으로 추가 |
Facade | 간단화 | 복잡한 하위 시스템을 간단한 인터페이스로 제공 |
Flyweight | 메모리 절약 | 공유 가능한 객체를 통해 비용 절감 |
Proxy | 접근 제어 | 대리 객체를 통해 접근을 제어 |
3.3 행위(Behavioral) 패턴
패턴 | 목적 | 설명 |
---|---|---|
Observer | 변화 통지 | 상태 변화 발생 시 등록된 객체에 자동 알림 |
Strategy | 행위 교체 | 알고리즘을 동적으로 교체 |
Template Method | 공통 흐름 정의 | 알고리즘의 골격을 상위 클래스에서 정의 |
Command | 요청 캡슐화 | 요청을 객체로 만들고 큐잉 및 실행 관리 |
State | 상태 전환 | 상태에 따른 행동 변화 구현 |
Mediator | 중재자 | 객체 간 상호작용을 한 객체가 중재 |
Iterator | 순차 접근 | 컬렉션 내부 구조에 상관없이 요소 접근 |
Memento | 상태 저장 | 객체의 상태를 보존하고 복원 |
Visitor | 연산 분리 | 데이터 구조와 연산을 분리 |
Chain of Responsibility | 요청 위임 | 요청을 여러 객체가 처리하도록 연결 |
Interpreter | 언어 해석 | 문법 표현을 해석하고 실행 |
4. 대표 패턴 예시 요약
패턴 | 실생활 또는 코드 예시 |
---|---|
Singleton | DB 커넥션, 전역 설정 |
Factory Method | 동물 객체 생성 메서드 |
Adapter | 콘센트 변환기 |
Decorator | 커피에 시럽 추가 |
Observer | 구독 알림, 주식 알림 시스템 |
Strategy | 정렬 알고리즘 교체 |
5. SOLID 원칙과 패턴 연결
SOLID 원칙 | 연계 패턴 | 설명 |
---|---|---|
SRP | Strategy, Decorator | 단일 책임 원칙 |
OCP | Observer, Factory | 확장에 열려 있고, 수정에는 닫힘 |
LSP | Template, Composite | 리스코프 치환 원칙 |
ISP | Adapter, Bridge | 인터페이스 분리 |
DIP | Factory, Mediator | 상위 모듈이 하위 모듈에 의존하지 않음 |
6. 마무리 요약
분류 | 패턴 수 | 핵심 목적 |
---|---|---|
생성 패턴 | 5개 | 객체 생성 방식 설계 |
구조 패턴 | 7개 | 클래스/객체 간 관계 설계 |
행위 패턴 | 11개 | 객체 간 책임 분배 및 상호작용 |
반응형
'자격증 > 정보처리기사' 카테고리의 다른 글
버블정렬(Bubble sort) (0) | 2025.04.14 |
---|---|
MVC(Model–View–Controller) (0) | 2025.04.14 |
비기능적 요구 (0) | 2025.04.14 |
유스케이스 연결선 4가지 완전 설명 (0) | 2025.04.14 |
유스케이스란 무엇인가 (0) | 2025.04.14 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 열혈프로그래밍
- 학습이론
- c++
- 오블완
- 일본어문법무작정따라하기
- 백준
- 유통관리사
- 통계학
- 통계
- 류근관
- 강화학습
- 보세사
- 인지부조화
- 조건형성
- C
- 티스토리챌린지
- 물류관리사
- 코딩테스트
- 데이터분석
- 심리학
- 행동주의
- 파이썬
- 회계
- Python
- 윤성우
- 행동심리학
- 일문따
- 정보처리기사
- K-MOOC
- 학습심리학
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
글 보관함
반응형