[OOP] GoF(Gang of Four) 디자인 패턴 장점 과 종류 !!

2026. 1. 26. 19:03·Knowledge/디자인 패턴

 

SOLID 랑 이것 저것 찾아보다가 디자인 패턴은 어떤 것 들이 있을까 해서 찾아봤습니다..

공부 할게 너무너무 많은 것 일단 종류만 먼저 정리해 볼게요 !! 

 

 디자인 패턴(Design Pattern)이란?

개발 중 발생하는 반복적인 문제들에 대한 해결책으로, 많은 개발자가 인정한 모범 사례(Best Practice)입니다. 객체 지향 4대 특성과 SOLID 원칙을 기반으로 합니다.

  디자인 패턴의 장점

  • 재사용성: 검증된 솔루션을 재사용하여 반복적인 문제 해결
  • 가독성: 명확한 구조로 코드를 이해하기 쉬움
  • 유지보수성: 모듈화가 용이하여 변경 시 해당 부분만 수정 가능
  • 확장성: 기존 코드를 건드리지 않고 새로운 기능 통합 용이
  • 안정성: 수많은 검증을 거친 신뢰할 수 있는 방식

 

디자인 패턴

 


🍳 객체 지향과 디자인 패턴의 비유

프로그래밍 개념 요리 비유 설명
객체 지향 4대 원칙 요리 도구 캡슐화, 상속, 추상화, 다형성
설계 원칙 (SOLID) 도구 사용법 도구를 올바르게 다루는 방법
디자인 패턴 레시피 표준화된 문제 해결 방법

GoF의 23가지 디자인 패턴

1. 생성 패턴 (Creational Pattern)

 

객체 생성에 관련된 패턴으로, 객체의 생성과 조합을 캡슐화해 특정 객체가 생성되거나 변경되어도 프로그램 구조에 영향을 크게 받지 않도록 유연성을 제공합니다.

 

Singleton
(싱글톤)
하나의 인스턴스만 생성되도록 보장하고, 어디서든 접근 가능하게 함
Factory Method
(팩토리 메서드)
객체 생성을 서브 클래스로 미루어 어떤 클래스의 인스턴스를 생성할지 결정
Abstract Factory
(추상 팩토리)
관련된 객체들의 집합을 생성하는 인터페이스를 제공하여 구체적인 생성을 추상화
Builder
(빌더)
복잡한 객체의 생성 과정을 단순화하여 단계적으로 생성 및 조립
Prototype
(프로토타입)
기존 객체를 복제(Clone)하여 새로운 객체를 생성

 

 

2. 구조 패턴 (Structural Pattern)

 

클래스나 객체를 조합해 더 큰 구조를 만드는 패턴입니다.

 

Adapter
(어댑터)
호환되지 않는 인터페이스를 가진 클래스들을 함께 사용할 수 있도록 래퍼(Wrapper) 제공
Bridge
(브릿지)
추상화와 구현을 분리하여 각각 독립적으로 확장 가능하게 함
Composite
(컴포지트)
개별 객체와 복합 객체를 동일하게 다루며 트리 구조를 구성
Decorator
(데코레이터)
객체에 동적으로 새로운 기능을 추가하여 확장
Facade
(퍼사드)
복잡한 서브시스템을 쉽게 사용할 수 있도록 단순한 통합 인터페이스 제공
Flyweight
(플라이웨이트)
대량의 작은 객체들을 공유하여 메모리 사용 최적화
Proxy
(프록시)
다른 객체에 대한 대리자를 제공하여 접근 제어, 지연 로딩 등을 수행

 

 

3. 행위 패턴 (Behavioral Pattern)

 

객체나 클래스 사이의 알고리즘이나 책임 분배에 관련된 패턴입니다.

 

Observer
(옵저버)
상태 변경 시 의존하는 다른 객체들에게 자동으로 알림
Strategy
(전략)
알고리즘을 정의하고 캡슐화하여 실행 중에 교체 가능하게 함
Command
(커맨드)
요청을 객체로 캡슐화하여 큐 저장, 로깅, 실행 취소 등을 지원
State
(상태)
객체의 내부 상태에 따라 스스로 행동을 변경하도록 함
Chain of Responsibility
(책임 연쇄)
요청을 처리하는 객체들을 체인으로 연결하여 처리할 때까지 넘김
Visitor
(방문자)
객체 구조를 변경하지 않고 새로운 연산을 수행할 수 있게 함
Interpreter
(인터프리터)
언어의 문법을 정의하고 해석기를 제공하여 문제 해결
Memento
(메멘토)
객체의 내부 상태를 저장해 두었다가 나중에 복원
Mediator
(중재자)
객체 간의 복잡한 통신을 캡슐화하여 결합도를 낮춤
Template Method
(템플릿 메서드)
알고리즘의 골격은 상위 클래스에, 구체적 단계는 하위 클래스에 구현
Iterator
(이터레이터)
내부 구조를 노출하지 않고 컬렉션의 요소에 순차적으로 접근

 


 

갑자기 또 궁금해진 GoF 저만,, 영어 약자 나오면 궁금해지는거 아니겠죠 아래에다가 정리해볼게요 !

디자인 패턴의 기원: GoF(Gang of Four)

우리가 학습하는 디자인 패턴의 표준은 1994년 출간된 책 《Design Patterns: Elements of Reusable Object-Oriented Software》에서 정립되었습니다.

이 책은 소프트웨어 설계의 공통된 문제에 대한 해법과 작명법을 제안하였으며, 공동 저자인 에리히 감마(Erich Gamma), 리처드 헬름(Richard Helm), 랄프 존슨(Ralph Johnson), 존 블리시데스(John Vlissides) 네 명을 가리켜 이 분야의 '4인방(Gang of Four, GoF)'이라 부릅니다.

  • 책의 전반부는 패턴의 정의를, 후반부는 실용적인 23가지 패턴을 다룸
  • 예제 코드는 객체지향 언어인 C++과 스몰토크(Smalltalk)로 작성됨
  • 한국어판은 피어슨 에듀케이션 코리아를 통해 출판됨
참고 및 출처: IT is True:티스토리

 

'Knowledge > 디자인 패턴' 카테고리의 다른 글

[OOP] 객체 지향 설계의 5가지 원칙 - S.O.L.I.D  (0) 2026.01.26
'Knowledge/디자인 패턴' 카테고리의 다른 글
  • [OOP] 객체 지향 설계의 5가지 원칙 - S.O.L.I.D
hlxecz
hlxecz
1인분 개발자가 되고 싶은 개발 기록
  • hlxecz
    H.Dev Log
    hlxecz
  • 전체
    오늘
    어제
    • 분류 전체보기 (12)
      • Language (7)
        • Java (7)
        • C (0)
        • PHP (0)
        • Python (0)
      • Framewrok (0)
        • Spring (0)
      • Data (0)
        • DBMS (0)
      • Cloud (0)
        • Amazon Cloud (0)
      • Knowledge (3)
        • 자료구조 (0)
        • 알고리즘 (1)
        • 디자인 패턴 (2)
      • DevOps (0)
      • Dev Kit (0)
        • InteliJ (0)
        • VSCode (0)
      • TEST (2)
        • Testing (2)
        • Error (0)
      • ETC (0)
        • 일상 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    빅오표기법
    바밀로니아
    BIG-O
    string
    Collection
    알고리즘
    인터페이스
    캡슐화
    생각정리
    Solid
    Java
    collections
    Interface
    피드백
    인터페이스 vs 추상클래스
    GOF
    시간복잡도
    setter
    문제점
    문제풀이
    재귀함수
    디자인 패턴
    자바
    OOP
    getter
    Stack
    Abstract
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
hlxecz
[OOP] GoF(Gang of Four) 디자인 패턴 장점 과 종류 !!
GitHub 상단으로

티스토리툴바