디자인 패턴이란 ?

김세빈·2025년 4월 12일

디자인패턴

목록 보기
1/7

디자인 패턴이란 무엇인가

디자인 패턴은 프로그램 설계 과정에서 자주 마주치는 문제를 객체 간 관계를 통해 해결하도록 정형화‑추상화해 놓은 ‘하나의 규약’이다.
거대한 코드베이스(수만 줄짜리 파일)를 모듈화하고, 재사용성과 유지보수성을 높이는 데 중추적 역할을 한다.

“어떠한 프레임워크·라이브러리의 토대가 되는 것이 바로 디자인 패턴이다.”

예를 들어 Node.js 인증 미들웨어인 Passport는 “전략(Strategy) 패턴” 위에서 구축됐다.
각각의 로그인 방식(로컬, JWT, OAuth 등)을 독립된 ‘전략’ 객체로 분리해, 애플리케이션 전체 구조를 건드리지 않고도 새로운 인증 방식을 끼워 넣을 수 있게 한다.


디자인 패턴을 도입하면 얻는 장점

  1. 문제 해결의 영감을 준다. 이미 검증된 해법을 참고해 빠르게 구조를 잡을 수 있다.
  2. 의사소통 비용을 절감한다. “여기선 옵저버 패턴 썼다” 한마디면 설계 의도를 즉시 공유할 수 있다.
  3. 유지보수와 확장이 쉬워진다. 책임이 명확히 분리돼 수정 범위가 최소화된다.
  4. 재사용성이 높아진다. 패턴 자체가 모듈·컴포넌트화된 설계를 유도하기 때문이다.

디자인 패턴의 세 가지 큰 분류

분류핵심 목적대표 패턴
생성(Creational) 패턴객체 생성 과정을 추상화·캡슐화해 유연성과 재사용성을 확보한다싱글턴, 팩토리 메서드, 추상 팩토리, 빌더, 프로토타입
구조(Structural) 패턴클래스·객체를 조합해 더 큰 구조를 만들면서도 결합도를 낮춘다어댑터, 브리지, 컴포지트, 데코레이터, 퍼사드, 프록시, 플라이웨이트
행동(Behavioral) 패턴객체 간 책임 분배·커뮤니케이션 방식을 정의한다전략, 옵저버, 커맨드, 스테이트, 템플릿 메서드, 이터레이터, 체인 오브 리스폰서빌리티, 미디에이터, 비지터, 인터프리터, 메멘토

아래에서 각 분류의 개념과 예시를 간단히 살펴본다.


1. 생성 패턴

  • 싱글턴(Singleton)
    • 애플리케이션 전역에서 단 하나만 존재해야 하는 객체(예: DB 연결 풀)를 보장한다.
  • 팩토리 메서드(Factory Method)
    • 객체 생성을 하위 클래스에 위임해, 상위 코드가 구체 타입에 의존하지 않도록 만든다.
  • 빌더(Builder)
    • 복잡한 객체를 단계별로 조립해 가독성을 높인다. (ex. React의 createElement, SQL query builder)

2. 구조 패턴

  • 어댑터(Adapter)
    • 호환되지 않는 인터페이스를 ‘변환기’로 이어 붙인다. (ex. 레거시 클래스 ↔ 새 API)
  • 데코레이터(Decorator)
    • 객체에 책임을 동적으로 덧씌워 기능을 확장한다. (ex. Express 미들웨어)
  • 퍼사드(Facade)
    • 복잡한 서브시스템을 단순 API 하나로 감싼다. (ex. AWS SDK의 고수준 클라이언트)

3. 행동 패턴

  • 전략(Strategy)
    • 알고리즘 군(群)을 캡슐화해 런타임에 교체한다. (ex. Passport 인증 전략)
  • 옵저버(Observer)
    • 상태 변화가 일어나면 등록된 관찰자에게 알린다. (ex. 이벤트 리스너, RxJS)
  • 커맨드(Command)
    • 요청을 객체로 래핑해, 실행·취소·재실행을 통합 관리한다. (ex. Redux action)

디자인 패턴은 “은총알”이 아니다.
하지만 문제 유형을 빠르게 분류하고, 검증된 설계 아이디어를 끌어다 쓰는 강력한 도구임은 분명하다.
새로운 프레임워크나 라이브러리를 탐구할 때도, 그 밑바탕에 어떤 패턴이 녹아 있는지 들여다보면 이해 속도가 눈에 띄게 빨라진다.

0개의 댓글