IT Knowledge/Architecture/images/디자인-패턴-diagram.svg

📐 “요리 레시피처럼, 프로그래밍에도 ‘이럴 땐 이렇게!’ 검증된 방법이 있어요.”


디자인 패턴이 뭐예요?

쉬운 비유: 요리 레시피

계란프라이 만들기:

  1. 팬 달구기
  2. 기름 두르기
  3. 계란 깨서 넣기
  4. 익으면 완성!

레시피 없이 하면? → 기름 없이 해서 눌어붙고, 팬 안 달궈서 질척함 😭

레시피대로 하면? → 누가 해도 성공! ✨

디자인 패턴 = 프로그래밍 레시피!


왜 필요해요?

없을 때있을 때
매번 처음부터 고민”아, 이건 싱글톤으로!”
실수하기 쉬움검증된 방법 사용
시간 오래 걸림빠르게 해결

패턴의 3가지 종류

종류하는 일비유
생성 패턴물건 만들기공장
구조 패턴연결하기레고 조립
행위 패턴소통하기대화

생성 패턴: 물건 만들기

싱글톤 (Singleton)

“하나만 있어야 해!”

비유프로그래밍
나라에 대통령은 한 명!설정 관리자는 하나!
두 명이면 혼란두 개면 충돌

언제 써요?

  • 설정 관리
  • DB 연결
  • 로그 기록

팩토리 (Factory)

“공장에서 찍어내기”

비유프로그래밍
”세단 주세요” → 세단 나옴”PDF 주세요” → PDF 만들기
”SUV 주세요” → SUV 나옴”엑셀 주세요” → 엑셀 만들기

언제 써요?

  • 종류별로 객체 만들 때
  • 어떤 종류인지 나중에 결정할 때

구조 패턴: 연결하기

어댑터 (Adapter)

“변환 플러그”

비유프로그래밍
한국 플러그 → 어댑터 → 유럽 콘센트옛날 코드 → 어댑터 → 새 코드

언제 써요?

  • 호환 안 되는 것 연결할 때
  • 옛날 코드 재활용할 때

데코레이터 (Decorator)

“토핑 추가”

비유프로그래밍
아이스크림 + 초코 + 견과류기본 기능 + 로그 + 보안

언제 써요?

  • 기능을 점점 추가할 때
  • 기본은 그대로, 옵션만 붙일 때

행위 패턴: 소통하기

옵저버 (Observer)

“구독/알림”

비유프로그래밍
유튜버가 영상 올림데이터가 바뀜
구독자들에게 알림!관련된 화면들 업데이트!

언제 써요?

  • 변화를 여러 곳에 알릴 때
  • 뉴스레터, 알림 기능

전략 (Strategy)

“방법 바꾸기”

비유프로그래밍
네비게이션: 자동차/도보/대중교통결제: 카드/페이/계좌이체
같은 목적지, 다른 방법같은 결과, 다른 방법

언제 써요?

  • 방법이 여러 개일 때
  • 나중에 방법을 바꿀 수 있을 때

언제 어떤 패턴?

상황추천 패턴
객체 하나만 있어야 함싱글톤
종류별로 객체 만들기팩토리
호환 안 되는 것 연결어댑터
기능 추가하기데코레이터
변화 알려주기옵저버
방법 바꾸기전략

주의사항

하지 마세요이렇게 하세요
모든 패턴 암기필요할 때 찾아보기
간단한 문제에 복잡한 패턴상황에 맞게 선택
”이게 정답!""이 상황에 맞을 것 같아”

핵심 정리

  1. 디자인 패턴 = 프로그래밍 레시피
  2. 3가지 종류 = 생성, 구조, 행위
  3. 사용법 = 암기 ❌, 이해하고 필요할 때 적용 ✅

더 알아보기

더 많은 패턴들:

  • 빌더: 복잡한 객체 단계별 만들기
  • 프록시: 대리인 세우기
  • 커맨드: 명령을 객체로
  • 상태: 상태에 따라 다르게

참고: Refactoring Guru - 그림으로 보는 패턴


관련 문서