디자인 패턴 — GoF 23 · 생성 · 구조 · 행위 E17

23개 이름을 낱개로 외우면 시험장에서 섞인다. 세 무리로 나눈 뒤 설명의 표지 낱말 하나로 이름을 확정한다

왜 이 장을 하나
패턴 문제는 설명 한 문단에 이름 하나다. 11회분에서 9문항, 이름은 Proxy · Abstract Factory 가 두 번씩이고 나머지는 전부 다르다. 이 장은 23개를 생성 5 · 구조 7 · 행위 11 로 나누고 무리마다 표지 낱말을 붙여, 처음 보는 설명에서도 후보를 셋 이하로 좁힌다.
다루는 것생성 5 · 구조 7 · 행위 11 · 아키텍처 패턴 · MVC
문항기출 9 · 예상 2 · 훈련 5
끝나면설명을 읽고 무리 → 이름을 적는다

01왜 이 장인가

왜 이걸 하나 — SW공학 37문항 중 9문항이 패턴이고 11회 중 9회에 나왔다. 2023년 3회와 2025년 3회만 빠졌다.

11회분 220문항 중 이 장의 기출은 9문항이다. 답이 나온 이름은 Proxy(2회) · Abstract Factory(2회) · Singleton · Visitor · Iterator · Adapter · Bridge · Observer 와 분류 이름 「행위 패턴」이다. 2026년 2회 17번은 보기 넷(Builder · Factory Method · Abstract Factory · Prototype)이 전부 생성 패턴이라 무리를 안 뒤 표지로 갈라야 했다.

몇 문항무엇을 적나보기
설명 → 패턴 이름6Proxy · Abstract Factory · Iterator · Adapter2023-1회 11번 · 2024-1회 20번 · 2024-2회 7번 · 2025-1회 14번 · 2025-2회 7번 · 2026-2회 17번
2칸 매칭2Singleton · Visitor, Bridge · Observer2023-2회 18번 · 2026-1회 3번
분류 이름1행위(Behavioral) 패턴2024-3회 8번

→ 기출 9문항에 나온 이름은 8개뿐이다. 23개 중 나머지 15개가 다음 회차의 후보이고, 훈련 5문항이 그중 12개(Factory Method · Builder · Prototype · Composite · Decorator · Flyweight · Template Method · Chain of Responsibility · Mediator · State · Facade · Memento 등)를 다룬다.

E01 진단의 17번(Abstract Factory)이 이 장이었다. 「외울 것이 많다」는 묶음인데, 패턴은 이름의 원어가 곧 동작이라(Proxy 대리, Adapter 변환기, Observer 관찰자) 원어 뜻으로 외우면 절반은 끝난다.

문항 수는 이 노트의 문제 데이터에서 ch=E17 인 것을 센 값이다(2026-09-14). 패턴 정의는 GoF(Gamma · Helm · Johnson · Vlissides, 1994) 분류를 따랐다.

02한눈에

왜 이걸 하나 — 시험 전날 23개를 무리별로, 표지 낱말과 함께 백지에 적어 본다.

생성 5 — 객체를 어떻게 만드나Singleton 하나만 · 어디서든 같은 인스턴스. Factory Method 생성을 하위 클래스에 맡김. Abstract Factory 관련 객체군을 통째로 · Kit. Builder 복잡한 객체를 단계별 조립. Prototype 원본을 복제.
구조 7 — 클래스 · 객체를 어떻게 엮나Adapter 호환 안 되는 인터페이스 변환. Bridge 추상과 구현을 분리해 따로 확장. Composite 트리 · 부분과 전체를 같게. Decorator 기능을 동적으로 덧붙임. Facade 복잡한 서브시스템을 단순 창구 하나로. Flyweight 작은 객체 공유로 메모리 절약. Proxy 대리자로 접근 제어.
행위 11 — 객체가 어떻게 협력하나 (1)Observer 상태 변화를 등록된 객체들에 통지. Strategy 알고리즘군을 캡슐화해 교체. Command 요청을 객체로 · 취소 · 큐잉. State 상태에 따라 행동 변경. Template Method 뼈대는 상위, 단계는 하위가 재정의. Iterator 내부 구조 노출 없이 순차 접근 · Cursor.
행위 11 — (2)Visitor 클래스 수정 없이 새 연산 추가. Mediator 상호작용을 중재자 하나에. Memento 상태 저장 · 복원(Undo). Chain of Responsibility 처리자 사슬로 넘김. Interpreter 언어의 문법을 클래스로.
헷갈리는 짝Adapter(인터페이스 변환) vs Facade(단순화) vs Proxy(접근 제어) vs Decorator(기능 추가) — 넷 다 「감싼다」. Strategy(알고리즘 교체) vs State(상태에 따라) vs Template Method(단계 재정의). Command(요청 객체화) vs Memento(상태 저장) — 둘 다 Undo.
아키텍처 패턴MVC(Model 데이터 · View 화면 · Controller 제어) · 계층(Layered) · 클라이언트-서버 · 파이프-필터(데이터 흐름) · 브로커(분산 중개) · 마스터-슬레이브 · 이벤트 버스. GoF 보다 큰 단위.

03밑바닥

왜 이걸 하나 — 이름을 외우는 것이 아니라 어느 무리인지 먼저 정하는 절차가 있어야 23개가 섞이지 않는다.

3-1. 첫 질문 — 만드나, 엮나, 협력하나

설명을 읽고 먼저 정하는 것은 무리다. 「생성 · 인스턴스 · 만든다 · 복제」가 보이면 생성, 「인터페이스 · 감싼다 · 구조 · 트리 · 공유」가 보이면 구조, 「요청 · 상태 · 알고리즘 · 통지 · 순회 · 연산 추가」가 보이면 행위다. 2024년 3회 8번은 이 무리 이름 자체(Observer · Strategy · Command 가 속한 것)를 물었고 답은 행위 패턴이다.

무리가 정해지면 후보가 5 · 7 · 11 로 준다. 그 안에서 설명의 고유한 낱말 하나로 확정한다. 생성이면 「하나만」 Singleton · 「하위 클래스가 결정」 Factory Method · 「객체군 · Kit」 Abstract Factory · 「단계별 조립」 Builder · 「복제」 Prototype.

2026년 2회 17번이 그 절차 그대로다. 보기 넷이 전부 생성 패턴이라 무리로는 못 가르고, 「서로 관련된 객체들의 집합 · Kit」가 Abstract Factory 의 고유 낱말이다. 2024년 1회 20번의 「객체들의 군(family)」도 같은 표지다.

3-2. 구조 패턴 넷은 전부 「감싸는데」 목적이 다르다

Adapter · Facade · Proxy · Decorator 는 넷 다 어떤 객체를 다른 객체가 감싼다. 갈리는 것은 왜 감싸느냐다. 인터페이스가 안 맞아 바꾸려고 감싸면 Adapter(2025년 1회 14번), 복잡한 여러 객체를 창구 하나로 단순하게 보이려고 감싸면 Facade, 접근을 제어하거나 대신 처리하려고 감싸면 Proxy(2023년 1회 11번 · 2025년 2회 7번), 기능을 덧붙이려고 감싸면 Decorator.

나머지 셋은 모양이 다르다. Bridge 는 추상(무엇을 하나)과 구현(어떻게 하나)을 두 계층으로 떼어 각자 확장한다(2026년 1회 3번). Composite 는 부분과 전체를 같은 인터페이스로 다뤄 트리를 만든다. Flyweight 는 같은 작은 객체를 여러 곳이 공유해 메모리를 아낀다.

3-3. 행위 패턴은 「무엇을 바꿔 끼우나」로 갈린다

행위 11 은 무엇을 캡슐화해 바꿔 끼우느냐로 읽는다. 알고리즘을 바꿔 끼우면 Strategy, 상태에 따라 행동이 바뀌면 State, 뼈대는 두고 단계만 바꾸면 Template Method, 요청 자체를 객체로 만들어 저장 · 취소 · 큐잉하면 Command, 객체의 상태를 저장했다 되돌리면 Memento.

객체 사이의 통신을 다루는 것이 넷이다. 한 객체의 변화를 여럿에게 알리면 Observer(2026년 1회 3번), 여럿의 상호작용을 중재자 하나에 모으면 Mediator, 처리자를 사슬로 엮어 차례로 넘기면 Chain of Responsibility, 컬렉션 안을 노출하지 않고 차례로 꺼내면 Iterator(2024년 2회 7번, 「Cursor」).

Visitor 는 클래스를 고치지 않고 새 연산을 추가하는 것이다(2023년 2회 18번). 「원소 클래스를 수정하지 않고 연산 추가」가 표지고, 「새 연산」이 Decorator 의 「새 기능」과 다른 점은 Visitor 가 여러 클래스에 걸친 연산을 밖에서 정의한다는 것이다. Interpreter 는 문법 규칙을 클래스로 만든다.

3-4. Undo 가 보이면 둘, 감싸면 넷, 하나만이면 하나

표지 낱말이 겹치는 자리가 셋이다. 「취소(Undo)」는 Command(요청을 저장해 두었다 되돌림)와 Memento(상태를 저장해 두었다 되돌림) 둘 다에 있어, 요청을 저장하나 상태를 저장하나로 가른다. 「감싼다」는 3-2 의 넷, 「하나만」은 Singleton 뿐이다.

아키텍처 패턴은 GoF 보다 한 단계 큰 그림이다. MVC 는 데이터(Model) · 화면(View) · 제어(Controller)로 나누고, 파이프-필터는 데이터가 필터를 차례로 지나며, 브로커는 분산 객체 사이를 중개한다. 「전체 구조」를 말하면 아키텍처, 「객체 몇 개의 관계」를 말하면 GoF 다.

통과 기준은 넷이다. 첫째, 23개를 생성 5 · 구조 7 · 행위 11 로 나눠 적는다. 둘째, 설명에서 무리를 먼저 고르고 고유 낱말로 이름을 확정한다. 셋째, 감싸는 넷(Adapter · Facade · Proxy · Decorator)과 Undo 둘(Command · Memento)을 목적으로 가른다. 넷째, MVC 세 요소의 역할을 말한다. 기출 9문항은 이 넷 안에 있다.
Factory Method 와 Abstract Factory 는 같은 것이다.Factory Method 는 객체 하나의 생성을 하위 클래스에 맡기는 것이고, Abstract Factory 는 서로 관련된 객체들의 집합(군)을 만드는 인터페이스다. 「군 · family · Kit」가 있으면 Abstract Factory 다. 2026년 2회 17번의 보기에 둘이 나란히 있었다.
Proxy 와 Decorator 는 둘 다 감싸니 구분할 수 없다.목적이 다르다. Proxy 는 접근을 제어하거나 대신 처리(지연 로딩 · 권한 검사)하고, Decorator 는 기능을 덧붙인다. 설명에 「접근 제어 · 대리」가 있으면 Proxy, 「기능 추가 · 동적으로」가 있으면 Decorator 다.

04기출

왜 이걸 하나 — 설명에서 무리 → 고유 낱말 → 이름 순서로 적는 연습이다.

답 칸에 무리(생성 · 구조 · 행위)를 먼저 적고 이름을 적는다. 이름은 영문(Proxy)과 한글(프록시) 중 문제가 보기로 준 표기를 따르고, 없으면 영문으로 적고 한글을 괄호에 덧붙인다.

2023-1회 · 11번디자인패턴

특정 객체에 대한 접근을 제어하기 위해 그 객체의 대리자(surrogate)를 두어 원래 객체의 작업을 대신 처리하게 하는 GoF 디자인 패턴은?

정답Proxy (프록시)
"연예인(실제 객체)에게 직접 연락 못 하고 매니저(프록시)를 거친다". 키워드 "대리"가 보이면 무조건 Proxy.
2023-2회 · 18번디자인패턴

① 클래스의 인스턴스를 하나만 생성해 어디서든 참조하게 하는 패턴 ② 원소 클래스를 수정하지 않고 새로운 연산을 추가할 수 있게 하는 행위 패턴

정답① 싱글톤(Singleton) ② 비지터(Visitor)
"하나만" → Singleton(회사 도장은 1개). "클래스 수정 없이 연산 추가" → Visitor(출장 검진 의사 — 병원 구조를 안 바꾸고 새 검사를 추가). ✔ 재검증 완료: 기사퍼스트 공식 가답안 및 GoF 정의 기준 비지터 확정 (중재자 주장은 근거 없음 — Mediator는 "객체 간 상호작용 캡슐화"로 지문과 무관).
2024-1회 · 20번디자인패턴

구체적인 클래스를 지정하지 않고, 서로 관련된 객체들의 군(family)을 생성하기 위한 인터페이스를 제공하는 생성 패턴은?

정답추상 팩토리 (Abstract Factory)
"이케아 시리즈 세트" — 침대·책상·옷장을 낱개로 고르지 않고 시리즈(군) 단위로 통일. "객체군(family)" 키워드 = Abstract Factory, "생성을 서브클래스에 위임" = Factory Method.
2024-2회 · 7번디자인패턴

컬렉션의 내부 구조를 노출하지 않고 요소들에 순차적으로 접근하게 하는 행위 패턴으로, Cursor라고도 불리는 것은?

정답이터레이터 (Iterator)
"책 내부 제본 방식은 몰라도 페이지는 넘길 수 있다". 별칭 'Cursor'가 결정적 힌트 — 커서라는 단어가 보이면 Iterator 즉답.
2024-3회 · 8번디자인패턴

GoF 디자인 패턴 중 객체 간의 상호작용과 책임 분배를 다루는 패턴 분류는? (Observer, Strategy, Command 등이 속함)

정답행위 (Behavioral) 패턴
생성(만들기 5개)/구조(조립 7개)/행위(협력 11개). 패턴 이름뿐 아니라 3분류 자체도 답이 될 수 있음을 보여준 문제.
2025-1회 · 14번디자인패턴

서로 호환되지 않는 인터페이스를 변환해 클래스들을 함께 동작하게 하는 구조 패턴은?

정답어댑터 (Adapter)
"110V 플러그를 220V 콘센트에 꽂게 해주는 돼지코". 키워드 "호환 안 되는 인터페이스 변환" = Adapter 즉답.
2025-2회 · 7번디자인패턴

실제 객체에 대한 접근을 제어하기 위해 대리 객체를 두는 구조 패턴은?

정답프록시 (Proxy)
2023년 1회와 동일 패턴 재출제! "대리" 키워드 = Proxy. 기출 패턴은 반드시 다시 나옵니다.
2026-1회 · 3번디자인패턴

① 추상부와 구현부를 분리해 독립적으로 확장할 수 있게 하는 구조 패턴 ② 객체 상태 변화 시 등록된 객체들에게 자동으로 통지하는 행위 패턴

정답① Bridge ② Observer
Bridge = "리모컨(조작)과 TV(구현)의 분리 — 어느 쪽을 바꿔도 서로 무관", Observer = "유튜브 구독 알림". 한 문제에 패턴 2개를 묻는 신경향.
2026-2회 · 17번디자인패턴

다음 설명에 해당하는 디자인 패턴을 보기에서 골라 쓰시오.

구체적인 클래스를 명시하지 않고 서로 관련되거나 의존적인 객체들의 집합을 생성하기 위한 인터페이스를 제공한다. ‘Kit’라고도 한다.

ㄱ. Builder
ㄴ. Factory Method
ㄷ. Abstract Factory
ㄹ. Prototype

정답ㄷ (Abstract Factory)
「관련된 객체들의 집합(family)」「Kit」가 Abstract Factory 의 표지다. Factory Method 는 객체 하나의 생성을 하위 클래스에 맡기고, Builder 는 복잡한 객체를 단계별로 조립하고, Prototype 은 복제로 만든다. 2024-1회 20번과 같은 정의다. 복원 출처는 grandlife.co.kr 2026-2회 복원 풀이(2026-09-14 대조). 공식 원문이 아니라 문장·변수명·수치가 실제와 다를 수 있다.
예상 1회 · 18번디자인패턴빈출 원리: 정의→이름

① 복잡한 서브시스템들을 하나의 단순한 통합 인터페이스로 제공하여 사용을 쉽게 하는 구조 패턴 ② 객체의 상태를 저장해 두었다가 필요할 때 이전 상태로 복원(Undo)할 수 있게 하는 행위 패턴

정답① 퍼사드 (Facade) ② 메멘토 (Memento)
Facade = "호텔 프런트"(객실·식당·세탁을 창구 하나로), Memento = "게임 세이브 파일". Proxy·Adapter·Singleton·Iterator·Observer는 이미 출제 — 남은 미출제 패턴이 다음 후보입니다.
예상 2회 · 18번디자인패턴빈출 원리: 정의→이름

① 알고리즘군을 각각 캡슐화하여 실행 중에 동적으로 교체할 수 있게 하는 행위 패턴 ② 요청 자체를 객체로 캡슐화하여 요청의 저장·취소(Undo)·큐잉이 가능하게 하는 행위 패턴

정답① 스트래티지 (Strategy) ② 커맨드 (Command)
Strategy = "내비 경로 옵션(최단/무료/고속)을 주행 중 갈아끼우기", Command = "식당 주문서(요청을 종이로 만들어 보관·취소 가능)". Proxy·Adapter·Iterator·Observer·Visitor·Bridge는 기출 완료 — 미출제 행위 패턴이 다음 후보군입니다.

05틀리는 자리

왜 이걸 하나 — 패턴은 같은 무리 안의 이웃과 바꿔 적어서 깎인다.

자리새는 꼴적는 법기출
Factory 둘Abstract Factory 자리에 Factory Method「군 · 집합 · Kit」면 Abstract Factory, 「하위 클래스가 결정」이면 Factory Method2024-1회 20번 · 2026-2회 17번
감싸는 넷Proxy 를 Adapter 나 Decorator 로접근 제어 = Proxy, 변환 = Adapter, 단순화 = Facade, 기능 추가 = Decorator2023-1회 11번 · 2025-1회 14번 · 2025-2회 7번
Undo 둘Memento 자리에 Command상태 저장 · 복원 = Memento, 요청 객체화 · 큐잉 = Command예상 1회 18번 · 예상 2회 18번
Bridge · Adapter둘을 바꾼다「추상과 구현 분리 · 독립 확장」 = Bridge, 「호환 안 되는 인터페이스」 = Adapter2026-1회 3번
표기「이터레이터」를 「이터레이션」으로, 「옵저버」를 「옵서버」로영문으로 적으면 안전 — Iterator · Observer2024-2회 7번 · 2026-1회 3번
분류 이름「행동 패턴」「동작 패턴」행위(Behavioral) 패턴. 생성(Creational) · 구조(Structural)2024-3회 8번
보기 기호보기가 있는데 이름을 적는다「기호로」면 ㄷ, 「골라 쓰시오」면 보기의 표기 그대로2026-2회 17번

영문 표기는 대소문자를 문제의 보기대로 따른다. 보기가 없으면 첫 글자 대문자(Abstract Factory · Chain of Responsibility)가 가장 흔한 정답표 표기다.

06훈련

왜 이걸 하나 — 기출에 아직 안 나온 15개 중 12개가 여기 있다.

5문항은 분류, 구조 셋(Composite · Decorator · Flyweight), 행위 넷(Template Method · Chain of Responsibility · Mediator · State), 생성 셋(Builder · Prototype · Factory Method), MVC 다. 정답은 GoF 정의로 대조했다.

훈련 SW공학 · 1번디자인패턴

다음 GoF 패턴을 생성 · 구조 · 행위로 분류하시오.

Factory Method, Decorator, Template Method, State, Builder, Composite

정답생성: Factory Method, Builder
구조: Decorator, Composite
행위: Template Method, State
생성 5 — Singleton · Factory Method · Abstract Factory · Builder · Prototype. 구조 7 — Adapter · Bridge · Composite · Decorator · Facade · Flyweight · Proxy. 행위 11 — Observer · Strategy · Command · State · Template Method · Iterator · Visitor · Mediator · Memento · Chain of Responsibility · Interpreter. 2024년 3회 8번이 「행위」 분류를 물었다.
훈련 SW공학 · 2번디자인패턴

다음 설명에 해당하는 구조 패턴을 각각 쓰시오.

① 객체들을 트리 구조로 구성해 부분과 전체를 같은 방식으로 다룬다
② 객체에 동적으로 새로운 기능(책임)을 덧붙인다
③ 많은 수의 작은 객체를 공유해 메모리를 아낀다

정답① Composite ② Decorator ③ Flyweight
「트리 · 부분-전체」면 Composite, 「덧붙인다 · 장식」이면 Decorator, 「공유 · 메모리」면 Flyweight. 기출에 나온 구조 패턴은 Proxy(2회) · Adapter · Bridge · Facade 이고 이 셋이 남은 것이다.
훈련 SW공학 · 3번디자인패턴

다음 설명에 해당하는 행위 패턴을 각각 쓰시오.

① 알고리즘의 뼈대를 상위 클래스에 두고 세부 단계만 하위 클래스가 재정의한다
② 요청을 처리할 수 있는 객체들을 사슬로 엮어 차례로 넘긴다
③ 객체 간의 복잡한 상호작용을 중재자 객체 하나에 모은다
④ 객체의 내부 상태에 따라 행동이 바뀌게 한다

정답① Template Method ② Chain of Responsibility ③ Mediator ④ State
「뼈대 · 단계 재정의」 Template Method, 「사슬 · 차례로」 Chain of Responsibility, 「중재자」 Mediator, 「상태에 따라」 State. 기출의 행위 패턴은 Visitor · Iterator · Observer · Strategy · Command · Memento 였고 이 넷이 남은 것이다.
훈련 SW공학 · 4번디자인패턴

생성 패턴 중 다음 설명에 해당하는 것을 각각 쓰시오.

① 복잡한 객체를 단계별로 조립해 만들고, 같은 절차로 다른 표현을 만들 수 있다
② 원본 객체를 복제해 새 객체를 만든다
③ 객체 생성을 하위 클래스에 맡겨 어떤 클래스의 인스턴스를 만들지 하위 클래스가 정한다

정답① Builder ② Prototype ③ Factory Method
생성 패턴 5개 중 기출은 Singleton · Abstract Factory 였다. Builder 는 「단계 · 조립」, Prototype 은 「복제」, Factory Method 는 「하위 클래스가 결정」. Abstract Factory 는 「관련 객체군 · Kit」로 구분한다(2026년 2회 17번의 보기 넷이 이 넷이다).
훈련 SW공학 · 5번디자인패턴

MVC 아키텍처 패턴의 세 요소가 각각 맡는 일을 쓰시오.

① Model ② View ③ Controller

정답① 데이터와 업무 로직 ② 화면 표시(사용자에게 보여 주는 것) ③ 입력을 받아 Model 과 View 를 잇는 흐름 제어
아키텍처 패턴은 GoF 보다 큰 단위다 — MVC · 계층(Layered) · 클라이언트-서버 · 파이프-필터 · 브로커 · 마스터-슬레이브. MVC 는 「데이터 · 화면 · 제어」 셋으로 나눠 화면을 바꿔도 데이터가 안 흔들리게 한다.

07백지 재현

왜 이걸 하나 — 아래를 안 보고 적을 수 있어야 이 장이 끝난다.