티스토리 뷰
반응형
📚 소프트웨어 개발자의 필수 지식: GoF 디자인 패턴 23가지 완벽 마스터하기!
소프트웨어 개발자라면 한 번쯤 들어봤을 디자인 패턴(Design Patterns)! 그중에서도 특히 GoF(Gang of Four) 디자인 패턴 23가지는 객체 지향 설계를 이해하고 더 나은 코드를 작성하는 데 필수적인 지식입니다. 하지만 23가지나 되는 패턴을 한 번에 외우고 이해하기란 쉽지 않은데요.
오늘은 이 23가지 GoF 디자인 패턴을 쉽고 효율적으로 학습할 수 있도록 핵심 특징 위주로 정리하고, 한눈에 파악할 수 있는 표까지 제공해 드리겠습니다! 이 글만 잘 익혀두시면 시험 대비는 물론, 실제 개발에서도 큰 도움이 될 거예요.
👷♂️ 1. 생성 (Creational) 패턴: 객체 생성의 유연성을 높여라!
생성 패턴은 객체를 만드는 과정을 추상화하고 캡슐화하여, 객체 생성 방식과 클라이언트 코드의 결합도를 낮추는 데 초점을 맞춥니다.
📝 생성 패턴별 핵심 특징
-
추상 팩토리 (Abstract Factory)
구체적인 클래스에 의존하지 않고 서로 연관되거나 의존적인 객체들의 조합을 만드는 인터페이스를 제공하는 패턴입니다.
연관성이 있는 객체 군이 여러 개 있을 경우 이들을 묶어 추상화하고, 어떤 구체적인 상황이 주어지면 팩토리 객체에서 집합으로 묶은 객체 군을 구현화하는 생성 패턴입니다.
관련성 있는 여러 종류의 객체를 일관된 방식으로 생성하는 경우에 유용하며, `Kit`이라고도 불립니다. -
빌더 (Builder)
복잡한 객체의 생성과 표현(구성)을 분리하여, 동일한 생성 절차로 다양한 표현의 객체를 만들 수 있도록 합니다. -
팩토리 메서드 (Factory Method)
객체를 생성하는 인터페이스는 상위 클래스(Creator)에서 정의하지만, 실제로 어떤 클래스의 인스턴스를 생성할지는 하위 클래스(Concrete Creator)가 결정합니다. -
프로토타입 (Prototype)
기존 객체를 복사(Clone)하여 새 객체를 생성함으로써, 객체 생성 비용을 줄이고 런타임에 동적으로 객체를 추가할 수 있습니다. -
싱글턴 (Singleton)
클래스의 인스턴스가 오직 하나만 존재하도록 보장하고, 그 유일한 인스턴스에 대한 전역적인 접근점을 제공합니다.
📊 생성 패턴 요약 표
🧱 2. 구조 (Structural) 패턴: 클래스와 객체의 효과적인 조합!
구조 패턴은 클래스와 객체들을 조합하여 더 큰 구조를 만들고, 구조적인 유연성과 효율성을 높이는 데 중점을 둡니다.
📝 구조 패턴별 핵심 특징
-
어댑터 (Adapter)
서로 호환되지 않는 인터페이스를 가진 클래스들을 함께 작동할 수 있도록 변환해 줍니다. -
브리지 (Bridge)
구현부(implementation)에서 추상화(abstraction)를 분리하여, 이 둘이 독립적으로 변화하고 확장될 수 있도록 합니다. -
컴포지트 (Composite)
객체들을 트리 구조로 구성하여 부분-전체 계층을 표현하며, 클라이언트가 개별 객체와 객체 컬렉션(복합 객체)을 동일하게 다룰 수 있도록 합니다. -
데코레이터 (Decorator)
기존 객체의 구조를 변경하지 않고, 동적으로 새로운 책임(기능)을 추가하거나 제거할 수 있도록 합니다. -
퍼사드 (Facade)
서브시스템의 복잡한 인터페이스를 단순화된 단일 인터페이스로 제공하여, 클라이언트가 서브시스템과 쉽게 상호작용하도록 합니다. -
플라이웨이트 (Flyweight)
많은 수의 작은 객체들을 효율적으로 공유하여 메모리 사용량을 줄이고 성능을 향상시킵니다. -
프록시 (Proxy)
특정 객체에 대한 접근을 제어하거나 기능을 추가하기 위한 "대리자(proxy)" 또는 "대변자" 역할을 합니다.
📊 구조 패턴 요약 표
🏃♂️ 3. 행동 (Behavioral) 패턴: 객체 간의 유연한 상호작용!
행동 패턴은 클래스와 객체들이 상호작용하고 책임을 분배하는 방법을 다루어, 객체 간의 통신과 협력을 효율적으로 만듭니다.
📝 행동 패턴별 핵심 특징
-
책임 연쇄 (Chain of Responsibility)
요청을 처리할 수 있는 기회를 여러 객체(처리자 체인)에게 부여하여, 요청을 보내는 객체와 받는 객체 간의 결합도를 낮춥니다. -
커맨드 (Command)
요청(행동)을 객체로 캡슐화하여, 요청을 매개변수화하거나 큐에 저장, 로깅, 실행 취소 등을 지원합니다. -
인터프리터 (Interpreter)
주어진 언어의 문법 표현을 정의하고, 그 문법 표현을 해석하는 해석기를 포함합니다. -
반복자 (Iterator)
컬렉션(집합 객체)의 내부 표현을 노출하지 않고 그 요소들에 순차적으로 접근하는 방법을 제공합니다. -
중재자 (Mediator)
객체들이 직접 상호작용하지 않고, 중앙에 위치한 중재자 객체를 통해서만 통신하도록 하여 객체 간의 복잡한 의존성을 줄입니다. -
메멘토 (Memento)
객체의 내부 상태를 외부에 노출하지 않고 객체 외부로 저장(캡처)했다가 나중에 그 상태로 복원할 수 있도록 합니다. -
옵저버 (Observer)
한 객체(주체)의 상태 변화에 따라 의존하는 여러 다른 객체(옵저버)들에게 자동으로 알림을 보내고 업데이트하도록 합니다. -
상태 (State)
객체의 내부 상태에 따라 객체의 행동이 변경되도록 하여, 조건문을 줄이고 행동을 객체화합니다. -
전략 (Strategy)
동일한 문제를 해결하는 다양한 알고리즘들을 정의하고 각각을 캡슐화하여, 런타임에 필요에 따라 알고리즘을 교체할 수 있도록 합니다. -
템플릿 메서드 (Template Method)
알고리즘의 골격(틀)을 상위 클래스에서 정의하고, 일부 단계의 구현은 하위 클래스에게 위임하여 알고리즘의 구조는 유지하되 세부 구현을 변경할 수 있도록 합니다. -
방문자 (Visitor)
객체 구조(요소 클래스)를 변경하지 않고, 그 구조의 요소(객체)에 대해 새로운 연산(기능)을 추가할 수 있도록 합니다.
📊 행동 패턴 요약 표
📊 GoF 디자인 패턴 23가지 전체 요약 표
다음 표는 23가지 GoF 디자인 패턴을 한눈에 볼 수 있도록 분류별로 핵심 기능과 목적을 요약한 것입니다.
이 글을 통해 각 GoF 디자인 패턴의 핵심 특징을 명확히 파악하고, 시험 대비 및 실제 개발에 효과적으로 활용하시기를 바랍니다. 꾸준히 반복 학습하며 자신만의 방식으로 패턴들을 정리해 나가는 것이 중요합니다! 🚀
반응형
'정보처리기사' 카테고리의 다른 글
관계형 데이터베이스, 무결성 제약, 개체 무결성, 참조 무결성, 도메인 무결성 (1) | 2025.07.15 |
---|---|
소프트웨어 테스트 커버리지 쉽게 암기 정리 (2) | 2025.07.14 |
소프트웨어 테스트 커버리지: 개념, 코드, 테스트케이스별 퍼센트까지 완전 정리 (0) | 2025.07.13 |
데이터베이스 조인 — 세타조인, 네추럴조인, 동등조인 (4) | 2025.07.12 |
RIP와 OSPF — 링크 상태와 다익스트라로 보는 두 가지 길 찾기 방식 (5) | 2025.07.12 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- dfs
- 그리디알고리즘
- C++ 알고리즘
- 백준
- 브루트포스
- Python
- python 알고리즘
- 문제 풀이
- DP
- c언어
- 동적계획법
- 알고리즘기초
- 동적 계획법
- 그리디
- 문제풀이
- 인접 행렬
- 객체지향
- 문자열처리
- 코딩 테스트
- 프로그래밍
- 알고리즘문제풀이
- 알고리즘
- c++알고리즘
- 코딩
- C++
- 파이썬
- 알고리즘 문제풀이
- 코딩테스트
- 그래프 탐색
- 파이썬코딩
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함
반응형