GoF

정희준·2025년 6월 5일
0

GoF

목록 보기
1/1

GoF란?

  • Gang of Four의 약자
  • 소프트웨어 디자인 패턴의 고전인 책 Design Patterns: Elements of Reusable Object-Oriented Software의 저자 네 명을 일컫는 말

GoF의 Design Patterns

  • 책에서는 23가지의 디자인 패턴을 세가지 분류로 나누어 설명함
분류설명
생성(Creational)객체 생성 방식을 캡슐화해서 유연하고 재사용 가능한 객체 생성을 도와줌
구조(Structural)클래스나 객체들을 조합하여 더 큰 구조를 만들 때 사용
행위(Behavioral)객체들 간의 상호작용, 책임 분산 및 알고리즘 캡슐화에 초점

생성(Creational) 패턴 - 5가지

패턴설명예시 상황
Singleton인스턴스를 하나만 생성DB 커넥션 풀, 설정 객체
Factory Method객체 생성을 서브클래스에게 위임다양한 유형의 메세지 객체 생성
Abstract Factory관련 객체들을 생성하는 인터페이스 제공GUI 툴킷에서 버튼/텍스트박스 일괄 생성
Builder복잡한 객체의 생성 과정을 단계별로 분리JSON/XML 변환기, 문자열 조합
Prototype객체를 복사(clone)해서 생성게임 캐릭터 복제, 템플릿 문서 생성

구조(Structural) 패턴 - 7가지

패턴설명예시 상황
Adapter인터페이스를 변환해 호환성 확보구버전 API <-> 새 클래스 호환
Bridge구현과 추상을 분리하여 독립 확장 가능리모콘 <-> TV 제어 구조
Composite트리 구조로 구성요소를 통일 처리폴더/파일 트리, GUI 컴포넌트
Decorator기존 객체에 기능을 동적으로 추가커피 -> 우유 추가 -> 시럽 추가
Facade복잡한 서브시스템을 단순 인터페잇로 제공Spring의 @Transactional
Flyweight공통 상태를 공유해 메모리 절약문자 렌더링, 체스말
Proxy실제 객체 대신 접근 제어용 객체 사용로깅, 캐시, 원격 프록시

행위(Behavioral) 패턴 - 11가지

패턴설명예시 상황
Observer상태 변화 -> 관련 객체 자동 통보이벤트 리스너, 게시판 알림
Strategy알고리즘을 런타임에 바꿀 수 있게정렬 방식 변경 (버블/퀵/병합)
Command요청을 객체로 캡슐화리모컨 버튼 -> 실행 취소
State상태에 따라 행동 변경자판기 상태 (대기/선택/결제 등)
Template Method알고리즘 틀은 고정, 일부만 오버라이딩웹 요청 처리 흐름
Iterator컬렉션 순회 방식 분리Iterator or forEach
Chain of Responsibility처리 객체들을 연결 -> 순서대로 처리필터 체인, 예외처리 체인
Mediator객체 간 복잡한 통신을 중재자로 위임채팅방의 중앙 서버 역할
Memento객체의 상태 저장/복원Undo 기능, 게임 저장
Interpreter언어 해석기 구현수식 계산기, 정규식 파서
Visitor요소마다 다른 연산 수행 (방문자 객체로)문서 구조 순회하여 다른 처리

0개의 댓글