문서 읽는 데 31분 · 6강 · 1과목 · 소프트웨어 설계

객체지향 설계 (GoF 디자인 패턴)

목차 23
전체 59강 중 6강 · 1과목 · 소프트웨어 설계

검증된 23개의 설계 레시피를 생성·구조·행위 세 분류로 가르는 게 이 강의 전부. 매 회차 1~3문항 보장되는 1과목 최빈출 단원.

핵심 암기 5종: 분류 5+7+11=23 · 생성 추빌팩프싱 · 구조 어브컴데퍼플프 · 행위 책커인이중메옵상전템방 · 1순위 BIG 3 = 싱·팩·옵


디자인 패턴과 GoF

디자인 패턴이란 ·개념 정의·

[정의] 소프트웨어 설계에서 자주 마주치는 문제에 대한 검증된 해결책을 정형화·재사용 가능한 형태로 정리한 설계의 모범 답안집.

[키워드] 검증된 + 재사용 가능 + 정형화 — 셋 중 하나라도 빠지면 디자인 패턴이라 부르지 않는다.

[장점] 재사용성↑ · 유지보수성↑ · 의사소통 표준(팀원과 '옵저버로 가자' 한마디로 통함). 결합도↓·응집도↑를 코드로 실현한 모범 사례라 5강·7강과 한 줄로 연결된다.

💡 보충 거장의 레시피 모음집 — 매번 시행착오 없이 검증된 해결책을 그대로 적용. 🎯 빈출 '디자인 패턴의 장점이 아닌 것은?' 부정형으로 간헐 출제.

GoF 4인방 ·1994·23개·

[정의] GoF(Gang of Four, 4인방) = 1994년 디자인 패턴 책 한 권으로 객체지향 설계의 표준을 만든 4명의 저자.

[구성] Erich Gamma · Richard Helm · Ralph Johnson · John Vlissides — 《Design Patterns》(1994)에서 23가지 패턴 정리.

🔑 암기 GoF = 4인방 / 1994년 / 23개 패턴 (세 숫자 묶음) 🎯 빈출 'GoF가 정의한 패턴 개수는?' 단답형. '23' 숫자는 거의 100% 출제.

GoF 23개 분류 체계 ·이 강의 골격·

[분류] 목적에 따라 세 그룹. 객체를 만들고(5) → 합치고(7) → 협력시킨다(11).

텍스트
GoF 디자인 패턴 23개
├─ 생성 5개  (객체를 만든다)    추빌팩프싱
├─ 구조 7개  (객체를 합친다)    어브컴데퍼플프
└─ 행위 11개 (객체가 협력한다)  책커인이중메옵상전템방
분류 개수 목적 두문자
생성(Creational) 5 객체를 어떻게 만들까 추빌팩프싱
구조(Structural) 7 객체를 어떻게 합칠까 어브컴데퍼플프
행위(Behavioral) 11 객체끼리 어떻게 협력할까 책커인이중메옵상전템방

🔑 암기 5 + 7 + 11 = 23 (생성·구조·행위 합 = GoF 총합) ⚠️ 함정 개수 자리 바꾸기 단골 — 생성이 7, 구조가 5 식으로 뒤집어 출제. 생성5·구조7·행위11 순서까지 한 세트. 🎯 빈출 분류 매칭은 매 회차 단골. 두문자 세 줄만 입에 붙으면 4지선다 2개는 자동 소거된다.


생성 패턴 — 추빌팩프싱

생성 5종 개요 ·추빌팩프싱·

[정의] 객체를 어떻게 만들 것인가에 답하는 패턴 군. 직접 new 하면 생성·사용 코드가 강하게 결합되는 걸 유연하게 분리한다.

패턴 한 줄 정의 결정 키워드
상 팩토리 관련 객체들을 묶음(family) 으로 생성 관련 객체 묶음·제품군
복잡한 객체를 단계별로 조립 단계별 조립
토리 메서드 객체 생성을 서브클래스에 위임 객체 생성 위임
로토타입 기존 객체를 복제(Clone) 복제·Clone
글톤 인스턴스를 단 하나만 단 하나·유일

🔑 암기 추빌팩프싱 (추상팩토리·빌더·팩토리메서드·프로토타입·싱글톤) — 결정 키워드 즉답: 하나=싱 / 위임=팩 / 복제=프로 / 조립=빌 / 묶음=추 🎯 빈출 1순위는 싱글톤·팩토리 메서드. 나머지 3종은 '생성 패턴이 아닌 것?' 소거형에서 5종 모두 알아야 풀린다.

싱글톤 (Singleton) ·생성·1순위 BIG 1·

[정의] 어떤 클래스의 인스턴스를 단 하나만 생성하도록 보장하고, 그 유일한 인스턴스에 어디서든 접근할 전역 접근점을 제공.

[키워드] 인스턴스 1개만 + 전역 접근.

🔑 암기 단 하나 / 유일 / 전역 접근 셋 중 하나라도 보이면 즉답 → 싱글톤 💡 보충 집에 하나뿐인 냉장고 — 누가 호출하든 같은 객체. 다만 남발하면 전역 변수처럼 결합도가 높아진다. 🎯 빈출 '인스턴스가 오직 하나만 존재' / '유일한 객체 생성' 표현이면 100% 싱글톤. 매 회차 거의 빠지지 않는 BIG 1.

팩토리 메서드 (Factory Method) ·생성·1순위 BIG 2·

[정의] 객체 생성을 서브클래스에서 결정하도록 위임. 부모는 '객체를 만든다'는 틀(인터페이스)만, 무엇을 만들지는 자식이 결정.

[비교] 팩토리 메서드 ↔ 추상 팩토리 — 한 글자 차이 함정 단골.

구분 만드는 대상
팩토리 메서드 객체 1개
추상 팩토리 관련 객체 묶음(family)

🔑 암기 '객체 생성 위임' / '상위는 인터페이스만, 하위가 구현' → 팩토리 메서드 ⚠️ 함정 '관련 객체 묶음' 표현이 보이면 팩토리 메서드가 아니라 추상 팩토리. 🎯 빈출 정의 매칭·옳은 설명 찾기. 매 회차 단골.


구조 패턴 — 어브컴데퍼플프

구조 7종 개요 ·어브컴데퍼플프·

[정의] 객체·클래스를 어떻게 합쳐 더 큰 구조를 짤 것인가. 인터페이스 연결·기능 덧붙이기·복잡한 구조 감싸기 등.

패턴 한 줄 정의 결정 키워드
댑터 인터페이스가 다른 두 객체를 연결·변환 인터페이스 변환·호환
릿지 추상과 구현을 분리해 독립 변경 추상-구현 분리
포지트 객체를 트리 구조(전체-부분) 트리·전체-부분
코레이터 기능을 동적으로 추가 기능 동적 추가
사드 복잡한 시스템을 단순한 인터페이스 단순 통합 인터페이스
라이웨이트 다수 객체를 공유해 메모리 절약 공유·메모리 절약
록시 실제 객체의 대리인 제공 대리인·접근 제어

🔑 암기 어브컴데퍼플프 (어댑터·브릿지·컴포지트·데코레이터·퍼사드·플라이웨이트·프록시) — 빈출 3종 즉답: 변환=어 / 기능추가=데 / 대리=프 🎯 빈출 2순위는 어댑터·데코레이터·프록시. 양 끝(어댑터↔프록시)이 모두 단골.

어댑터 (Adapter) ·구조·2순위·

[정의] 인터페이스가 서로 호환되지 않는 두 객체를 연결. 한쪽 인터페이스를 다른 쪽이 기대하는 형태로 변환.

🔑 암기 인터페이스 변환 / 호환되지 않는 두 객체 연결 → 무조건 어댑터 💡 보충 220V 기기를 110V 콘센트에 끼우는 변환잭, USB-C↔USB-A 젠더. 🎯 빈출 '인터페이스 변환' / '변환·호환·연결' 빈칸형 단골.

데코레이터 (Decorator) ·구조·2순위·

[정의] 기존 객체를 수정하지 않고 새 기능을 동적으로 덧붙이는 패턴. 객체 위에 기능을 한 겹씩 추가.

[비교] 상속은 컴파일 시점 고정 / 데코레이터는 런타임에 동적 추가.

🔑 암기 상속 없이 기능 동적 추가 → 데코레이터 💡 보충 김밥에 토핑 한 겹씩 — 원본은 그대로, 층만 얹고 뗀다. 🎯 빈출 '기능을 동적으로 추가' / '상속 없이 기능 확장' 빈칸형 단골.

프록시 (Proxy) ·구조·2순위·

[정의] 실제 객체에 대한 대리인을 두어, 클라이언트가 직접 접근하지 않고 대리인을 거치게 한다. 그 사이에 접근 제어·캐싱·지연 로딩을 끼운다.

[비교] 데코레이터 ↔ 프록시 — 매 회차 함정 단골.

구분 목적
데코레이터 기능 추가(한 겹씩 덧붙임)
프록시 접근 제어·대리(중간에서 가로챔)

🔑 암기 대리인 / 접근 제어 / 지연 로딩 / 캐싱 → 프록시 💡 보충 사장님 대신 일정을 거르는 비서 — 본체는 본업에, 대리인이 부가 처리. ⚠️ 함정 '기능 추가'면 데코레이터, '접근 제어·대리·캐싱'이면 프록시. 이 둘 구분이 1순위 함정.


행위 패턴 — 책커인이중메옵상전템방

행위 11종 개요 ·책커인이중메옵상전템방·

[정의] 여러 객체가 어떻게 책임을 나누고 협력할 것인가. 메시지 전달·알고리즘 교체·상태 변화에 따른 동작 변경 등. 개수가 가장 많다.

패턴 한 줄 정의 결정 키워드
임 연쇄 처리 객체를 체인으로 연결, 차례로 전달 체인·차례로
맨드 요청을 객체로 캡슐화(실행·취소·로깅) 요청 객체화·Undo
터프리터 문법 규칙을 클래스로 정의해 해석 문법 해석
터레이터 컬렉션 내부 노출 없이 순회 순회·Iterator
재자 객체 간 통신을 중재자에 집중 중재자·관제탑
멘토 객체 상태를 저장·복원(Undo) 상태 저장·복원
저버 상태 변화를 구독자에게 자동 알림 자동 알림·Pub-Sub
상태에 따라 행동을 다르게 상태 따라 행동
알고리즘을 캡슐화해 교체 알고리즘 교체
플릿 메서드 공통 골격은 부모, 세부는 자식 골격+세부
문자 구조 변경 없이 새 연산 추가 Visit·새 연산

🔑 암기 책커인이중메옵상전템방 — 빈출 3종 즉답: 알림=옵 / 교체=전 / 골격=템 🎯 빈출 1순위 옵저버, 2순위 전략·템플릿 메서드. 11종이 모두 행위라는 것만 외워둬도 소거형은 무패.

옵저버 (Observer) ·행위·1순위 BIG 3·

[정의] 한 객체(주체)의 상태가 변할 때 구독하는 모든 객체(관찰자)에게 자동으로 알림. 발행-구독(Publish-Subscribe) 모델의 대표.

[키워드] 상태 변화 자동 알림 + 느슨한 결합(주체는 구독자가 누군지 몰라도 됨).

🔑 암기 1:N 자동 알림 / 발행-구독(Pub-Sub) / 상태 변화 통보 → 옵저버 💡 보충 채팅방에 새 메시지 → 구성원 전원 알림, 영상 채널 업로드 → 구독자 전원 알림. 🎯 빈출 '상태 변화를 다수에게 자동 통보' / '발행-구독' 정의 매칭. 매 회차 거의 빠지지 않는 BIG 3.

전략 (Strategy) ·행위·2순위·

[정의] 같은 문제를 푸는 여러 알고리즘을 각각 캡슐화해두고, 상황에 맞게 알고리즘을 교체할 수 있게 한다.

[비교] 전략 ↔ 상태 — 자주 헷갈리는 짝.

구분 행동이 바뀌는 방식
전략 클라이언트가 명시적으로 알고리즘 선택
상태 객체 상태에 따라 자동으로 행동 변경

🔑 암기 알고리즘 캡슐화·교체 → 전략 💡 보충 내비게이션 경로 옵션(최단·최저요금·추천)을 골라 갈아끼우듯. ⚠️ 함정 '내가 골라 교체'면 전략, '상태 따라 알아서 바뀌면' 상태.

템플릿 메서드 (Template Method) ·행위·2순위·

[정의] 알고리즘의 공통 골격은 부모 클래스에서 정의하고, 세부 단계 구현은 자식 클래스에 맡긴다. 큰 흐름은 고정, 일부 단계만 자식이 채운다.

[비교] 템플릿 메서드 ↔ 전략.

구분 핵심
템플릿 메서드 상속 + 골격 고정(부모-자식)
전략 위임 + 알고리즘 교체(객체끼리)

🔑 암기 공통 골격은 상위, 세부는 하위 → 템플릿 메서드 💡 보충 프랜차이즈 매뉴얼 — 인사·주문·제조·결제 흐름은 고정, 제조 단계만 매장별로. 🎯 빈출 '공통 알고리즘 골격은 상위, 세부는 하위' 빈칸형 단골. 상속 기반이면 템플릿, 객체 교체면 전략.


패턴 함정 정리

헷갈리는 짝 7세트 ·시험 직전 점검표·

[비교] 매 회차 함정이 되는 짝. 시험 직전 이 표만 다시 봐도 함정 두세 개는 거른다.

헷갈리는 짝 결정적 차이
팩토리 메서드 vs 추상 팩토리 객체 1개 vs 관련 객체 묶음
데코레이터 vs 프록시 기능 추가 vs 접근 제어·대리
어댑터 vs 브릿지 기존 것 호환 변환 vs 처음부터 추상-구현 분리 설계
전략 vs 상태 명시적 알고리즘 교체 vs 상태 따라 자동 변경
컴포지트 vs 데코레이터 트리 구조 vs 기능 한 겹씩 추가
옵저버 vs 중재자 1:N 자동 알림 vs N:N 통신을 1점 집중
템플릿 메서드 vs 전략 상속+골격 고정 vs 위임+알고리즘 교체

🔑 암기 결정 단어 한 개 즉답 — 복제=프로토타입 / 조립=빌더 / 유일=싱글톤 / 변환=어댑터 / 기능추가=데코레이터 / 대리=프록시 / 자동알림=옵저버 / 교체=전략 / 골격=템플릿 메서드 ⚠️ 함정 '데코레이터 vs 프록시'와 '전략 vs 상태'가 가장 잦은 단골 함정. 이 둘만큼은 절대 안 헷갈리게.

GoF vs 아키텍처 패턴 ·MVC 함정·

[비교] 같은 '패턴'이라도 스코프가 다르다. GoF는 객체·클래스 단위, 아키텍처 패턴은 시스템 단위.

구분 단위 대표
GoF 디자인 패턴 객체·클래스 싱글톤·팩토리·옵저버 등 23개
아키텍처 패턴 시스템 전체 MVC·파이프-필터·레이어드 등 (9강)

⚠️ 함정 MVC·파이프-필터·레이어드는 아키텍처 패턴(9강), GoF 23개 아님. 보기에 MVC가 GoF 사이에 섞여 있으면 즉답 정답 후보. 🎯 빈출 'GoF 23개에 포함되지 않는 것?' 거리형 단골. 두문자 세 줄 안에 없으면 GoF가 아니다.


기출 다지기

[기출 1 출제] 다음 중 GoF 디자인 패턴의 분류와 패턴이 잘못 짝지어진 것은? (짝짓기 오류형)

  • ① 생성 패턴 — 싱글톤(Singleton)
  • ② 구조 패턴 — 어댑터(Adapter)
  • ③ 행위 패턴 — 옵저버(Observer)
  • ④ 행위 패턴 — 추상 팩토리(Abstract Factory)
정답 및 해설 보기

정답 ④

추상 팩토리는 관련 객체를 묶음으로 만드는 생성 패턴(추빌팩프싱의 첫 글자 '추')이다. 행위 패턴이 아니다.

선지 판정 근거
정확 싱글톤 = 생성(추빌팩프)
정확 어댑터 = 구조(브컴데퍼플프)
정확 옵저버 = 행위(책커인이중메상전템방)
잘못된 짝 추상 팩토리 = 생성(행위 아님)

🔑 추빌팩프싱은 만들고 · 어브컴데퍼플프는 합치고 · 책커인이중메옵상전템방은 협력한다.

[기출 2 출제] 다음 설명에 해당하는 GoF 디자인 패턴은? (설명→용어)

시스템 내에서 어떤 클래스의 인스턴스가 단 하나만 존재하도록 보장하고, 어디에서든 그 유일한 인스턴스에 접근할 수 있도록 전역 접근점을 제공한다.

  • ① 옵저버(Observer)
  • ② 싱글톤(Singleton)
  • ③ 팩토리 메서드(Factory Method)
  • ④ 어댑터(Adapter)
정답 및 해설 보기

정답 ②

'인스턴스가 단 하나만 존재' + '전역 접근점'은 싱글톤의 결정적 키워드.

선지 판정 근거
① 옵저버 오답 1:N 상태 변화 자동 알림
② 싱글톤 정답 단 하나·전역 접근
③ 팩토리 메서드 오답 객체 생성을 서브클래스에 위임
④ 어댑터 오답 인터페이스 변환(구조 패턴)

🔑 '단 하나/유일/전역 접근' 셋 중 하나라도 보이면 0.5초 컷 싱글톤.

[기출 3 출제] 다음 설명에 해당하는 GoF 디자인 패턴은? (설명→용어)

한 객체의 상태가 변화했을 때 그 객체에 의존하는 다른 객체들에게 자동으로 통지하고 갱신하도록 한다. 발행-구독(Publish-Subscribe) 모델로도 알려져 있다.

  • ① 커맨드(Command)
  • ② 전략(Strategy)
  • ③ 옵저버(Observer)
  • ④ 데코레이터(Decorator)
정답 및 해설 보기

정답 ③

'상태 변화', '의존 객체에 자동 통지', '발행-구독'은 모두 옵저버의 결정적 키워드. 1:N 자동 알림이 본질.

선지 판정 근거
① 커맨드 오답 요청을 객체로 캡슐화
② 전략 오답 알고리즘 캡슐화·교체
③ 옵저버 정답 상태 변화 자동 통지·발행-구독
④ 데코레이터 오답 기능 동적 추가(구조 패턴이라 분류부터 다름)

🔑 '발행-구독 / 자동 알림 / 1:N' = 옵저버.

[기출 4 출제] 팩토리 메서드(Factory Method) 패턴에 대한 설명으로 옳은 것은? (긍정형)

  • ① 인스턴스가 단 하나만 존재하도록 보장한다
  • ② 객체 생성을 서브클래스에 위임하여 어떤 인스턴스를 만들지 자식이 결정한다
  • ③ 한 객체의 상태 변화를 다수의 구독자에게 자동으로 알린다
  • ④ 인터페이스가 다른 두 객체를 호환되도록 변환한다
정답 및 해설 보기

정답 ②

팩토리 메서드의 핵심은 '객체 생성을 서브클래스에 위임'. 나머지 보기는 각각 다른 패턴의 정의다.

선지 어떤 패턴?
① 단 하나만 존재 싱글톤
② 객체 생성 위임 팩토리 메서드(정답)
③ 상태 변화 다수 알림 옵저버
④ 인터페이스 변환 어댑터

🔑 '관련 객체 묶음'이면 추상 팩토리, '객체 생성 위임'만 보이면 팩토리 메서드.

[기출 5 출제] 다음 중 GoF 디자인 패턴 중 행위(Behavioral) 패턴에 속하지 않는 것은? (소거형)

  • ① 옵저버(Observer)
  • ② 전략(Strategy)
  • ③ 템플릿 메서드(Template Method)
  • ④ 프록시(Proxy)
정답 및 해설 보기

정답 ④

프록시는 실제 객체의 대리인을 제공하는 구조 패턴(어브컴데퍼플프의 마지막 '프')이다.

선지 분류 근거
① 옵저버 행위 책커인이중메상전템방
② 전략 행위 책커인이중메옵상템방
③ 템플릿 메서드 행위 책커인이중메옵상전
④ 프록시 구조 어브컴데퍼플 (행위 아님)

🔑 책커인이중메옵상전템방에 있으면 행위, 어브컴데퍼플프에 있으면 구조.

[기출 6 출제] 다음 중 GoF의 23가지 디자인 패턴에 포함되지 않는 것은? (거리형)

  • ① 빌더(Builder)
  • ② 컴포지트(Composite)
  • ③ 메멘토(Memento)
  • ④ 모델-뷰-컨트롤러(MVC)
정답 및 해설 보기

정답 ④

MVC는 시스템 전체 구조를 다루는 아키텍처 패턴(9강)이다. GoF 23개에는 포함되지 않는다.

선지 분류 두문자 위치
① 빌더 생성 팩프싱
② 컴포지트 구조 어브데퍼플프
③ 메멘토 행위 책커인이중옵상전템방
④ MVC 아키텍처 GoF 아님(시스템 단위)

🔑 GoF는 객체·클래스 단위, 아키텍처 패턴은 시스템 단위. 두문자 세 줄 안에 없으면 GoF가 아니다.

[기출 7 출제] 다음 ( ) 안에 들어갈 디자인 패턴을 순서대로 바르게 짝지은 것은? (빈칸형)

㉠ ( ) 패턴은 객체에 추가 책임을 동적으로 부여하며, 상속 없이 기능을 확장한다. ㉡ ( ) 패턴은 인터페이스가 다른 클래스들을 함께 작동하도록 변환한다. ㉢ ( ) 패턴은 알고리즘군을 정의하고 각각을 캡슐화하여 교체 가능하게 만든다.

  • ① ㉠ 데코레이터 · ㉡ 어댑터 · ㉢ 전략
  • ② ㉠ 어댑터 · ㉡ 데코레이터 · ㉢ 전략
  • ③ ㉠ 데코레이터 · ㉡ 전략 · ㉢ 어댑터
  • ④ ㉠ 프록시 · ㉡ 어댑터 · ㉢ 템플릿 메서드
정답 및 해설 보기

정답 ①

빈칸 결정 키워드 정답
동적으로 책임 부여·상속 없이 기능 확장 데코레이터
인터페이스 다른 클래스 변환 어댑터
알고리즘군 캡슐화·교체 가능 전략
선지 판정 근거
정답 기능추가=데코 / 변환=어댑터 / 교체=전략
오답 ㉠㉡ 뒤바뀜
오답 ㉡㉢ 뒤바뀜
오답 키워드와 안 맞는 패턴 매칭

🔑 기능 추가=데코레이터, 변환=어댑터, 교체=전략 — 결정 단어 한 개로 즉답.


한 장 요약

분류 암기 패턴
골격 5+7+11=23 생성 5 · 구조 7 · 행위 11
생성 추빌팩프싱 추상팩토리·빌더·팩토리메서드·프로토타입·싱글톤
구조 어브컴데퍼플프 어댑터·브릿지·컴포지트·데코레이터·퍼사드·플라이웨이트·프록시
행위 책커인이중메옵상전템방 책임연쇄·커맨드·인터프리터·이터레이터·중재자·메멘토·옵저버·상태·전략·템플릿메서드·방문자
1순위 BIG 3 = 싱·팩·옵 싱글톤 · 팩토리 메서드 · 옵저버
결정 키워드 정답 결정 키워드 정답
단 하나/유일 싱글톤 인터페이스 변환 어댑터
객체 생성 위임 팩토리 메서드 기능 동적 추가 데코레이터
복제(Clone) / 단계별 조립 프로토타입 / 빌더 대리인/접근 제어 프록시
관련 객체 묶음 추상 팩토리 상태 변화 자동 알림 옵저버
알고리즘 교체 전략 공통 골격+세부 자식 템플릿 메서드

🎯 합격 한 끗: 두문자 세 줄 + BIG 3 + 결정 키워드 한 개씩이면 6강은 무패. 가장 잦은 함정은 데코레이터 vs 프록시(기능추가 vs 대리)와 MVC ≠ GoF(MVC는 아키텍처 패턴·9강). 패턴은 SOLID(7강)를 코드로 푼 도구라는 한 줄로 7강과 이어진다.

전체 목록 필기 이론

합격까지

정처기, 혼자 막막하다면

초개인화 학습앱 Klue와 에듀윌 온라인강의로 합격까지 이어가세요.