정보처리기사/소프트웨어 설계
디자인 패턴(Design Pattern)
glorypang
2025. 10. 6. 18:43
728x90
반응형
SMALL
1. 생성(Creational) 패턴
“객체를 어떻게 만들까?” — 객체 생성 과정을 캡슐화
| 패턴 | 핵심 개념 | 간단 비유 |
| Singleton | 인스턴스를 하나만 생성, 전역적으로 공유 | 대통령(한 명만 존재) |
| Factory Method | 객체 생성을 서브클래스에 위임 | “주문하면 공장에서 만들어줌” |
| Abstract Factory | 관련 객체 집합을 생성하는 인터페이스 제공 | 가구 공장에서 “세트”로 생산 |
| Builder | 복잡한 객체를 단계별로 조립 | 햄버거 조립 순서 지정 |
| Prototype | 복제(clone) 로 객체 생성 | 도장을 복사해서 찍기 |
2. 구조(Structural) 패턴
“클래스나 객체를 어떻게 연결할까?” — 구조적 관계 설계
| 패턴 | 핵심 개념 | 간단 비유 |
| Adapter | 인터페이스가 달라도 호환되게 연결 | 변압기, 돼지코 어댑터 |
| Bridge | 추상과 구현을 분리해 독립적으로 확장 | 리모컨(추상) ↔ TV(구현) |
| Composite | 부분-전체 계층을 동일하게 다룸 | 폴더–파일 트리 구조 |
| Decorator | 기존 객체에 동적으로 기능 추가 | 커피 + 시럽 + 휘핑크림 |
| Facade | 복잡한 서브시스템에 단일 진입점 제공 | 호텔 프론트 데스크 |
| Flyweight | 공유 가능한 속성을 캐싱해 메모리 절약 | 글자 폰트 객체 공유 |
| Proxy | 대리 객체가 접근 제어/로깅 등 수행 | 경비원, 리모컨 |
행위(Behavioral) 패턴
“객체들이 어떻게 상호작용할까?” — 로직 흐름과 책임 분배
| 패턴 | 핵심 개념 | 간단 비유 |
| Strategy | 알고리즘을 런타임에 교체 가능 | 길 찾기 (지하철/버스/도보 선택) |
| Observer | 상태 변화 시 등록된 객체에게 알림 | 유튜브 구독 알림 |
| Command | 요청을 객체로 캡슐화 | 리모컨 버튼 = 명령 객체 |
| Chain of Responsibility | 요청을 책임자들이 순차 처리 | 민원 접수 → 부서 전달 |
| State | 상태에 따라 행동이 달라짐 | 문(열림/닫힘) 상태별 동작 |
| Template Method | 알고리즘 틀을 정하고 세부는 하위 클래스에 위임 | 레시피(골격 고정, 재료는 변경) |
| Mediator | 객체 간 직접 통신 대신 중재자 사용 | 관제탑이 항공기들 조정 |
| Memento | 객체의 상태를 저장/복원 | 게임 저장/불러오기 |
| Visitor | 구조는 고정, 새 기능은 외부 방문자로 | 관람객이 여러 전시물 방문 |
| Interpreter | 언어 문법을 해석기 객체로 구현 | 수식 파서, SQL 해석기 |
| Iterator | 내부 구조 숨기고 순회 | for-each 구문처럼 반복 |
| Observer | (중요해서 한 번 더 강조) 변화 감시–통지 |
728x90
반응형
LIST