23개 이름을 낱개로 외우면 시험장에서 섞인다. 세 무리로 나눈 뒤 설명의 표지 낱말 하나로 이름을 확정한다
왜 이걸 하나 — 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)이 전부 생성 패턴이라 무리를 안 뒤 표지로 갈라야 했다.
| 꼴 | 몇 문항 | 무엇을 적나 | 보기 |
|---|---|---|---|
| 설명 → 패턴 이름 | 6 | Proxy · Abstract Factory · Iterator · Adapter | 2023-1회 11번 · 2024-1회 20번 · 2024-2회 7번 · 2025-1회 14번 · 2025-2회 7번 · 2026-2회 17번 |
| 2칸 매칭 | 2 | Singleton · Visitor, Bridge · Observer | 2023-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) 분류를 따랐다.
왜 이걸 하나 — 시험 전날 23개를 무리별로, 표지 낱말과 함께 백지에 적어 본다.
왜 이걸 하나 — 이름을 외우는 것이 아니라 어느 무리인지 먼저 정하는 절차가 있어야 23개가 섞이지 않는다.
설명을 읽고 먼저 정하는 것은 무리다. 「생성 · 인스턴스 · 만든다 · 복제」가 보이면 생성, 「인터페이스 · 감싼다 · 구조 · 트리 · 공유」가 보이면 구조, 「요청 · 상태 · 알고리즘 · 통지 · 순회 · 연산 추가」가 보이면 행위다. 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)」도 같은 표지다.
Adapter · Facade · Proxy · Decorator 는 넷 다 어떤 객체를 다른 객체가 감싼다. 갈리는 것은 왜 감싸느냐다. 인터페이스가 안 맞아 바꾸려고 감싸면 Adapter(2025년 1회 14번), 복잡한 여러 객체를 창구 하나로 단순하게 보이려고 감싸면 Facade, 접근을 제어하거나 대신 처리하려고 감싸면 Proxy(2023년 1회 11번 · 2025년 2회 7번), 기능을 덧붙이려고 감싸면 Decorator.
나머지 셋은 모양이 다르다. Bridge 는 추상(무엇을 하나)과 구현(어떻게 하나)을 두 계층으로 떼어 각자 확장한다(2026년 1회 3번). Composite 는 부분과 전체를 같은 인터페이스로 다뤄 트리를 만든다. Flyweight 는 같은 작은 객체를 여러 곳이 공유해 메모리를 아낀다.
행위 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 는 문법 규칙을 클래스로 만든다.
표지 낱말이 겹치는 자리가 셋이다. 「취소(Undo)」는 Command(요청을 저장해 두었다 되돌림)와 Memento(상태를 저장해 두었다 되돌림) 둘 다에 있어, 요청을 저장하나 상태를 저장하나로 가른다. 「감싼다」는 3-2 의 넷, 「하나만」은 Singleton 뿐이다.
아키텍처 패턴은 GoF 보다 한 단계 큰 그림이다. MVC 는 데이터(Model) · 화면(View) · 제어(Controller)로 나누고, 파이프-필터는 데이터가 필터를 차례로 지나며, 브로커는 분산 객체 사이를 중개한다. 「전체 구조」를 말하면 아키텍처, 「객체 몇 개의 관계」를 말하면 GoF 다.
왜 이걸 하나 — 설명에서 무리 → 고유 낱말 → 이름 순서로 적는 연습이다.
답 칸에 무리(생성 · 구조 · 행위)를 먼저 적고 이름을 적는다. 이름은 영문(Proxy)과 한글(프록시) 중 문제가 보기로 준 표기를 따르고, 없으면 영문으로 적고 한글을 괄호에 덧붙인다.
특정 객체에 대한 접근을 제어하기 위해 그 객체의 대리자(surrogate)를 두어 원래 객체의 작업을 대신 처리하게 하는 GoF 디자인 패턴은?
① 클래스의 인스턴스를 하나만 생성해 어디서든 참조하게 하는 패턴 ② 원소 클래스를 수정하지 않고 새로운 연산을 추가할 수 있게 하는 행위 패턴
구체적인 클래스를 지정하지 않고, 서로 관련된 객체들의 군(family)을 생성하기 위한 인터페이스를 제공하는 생성 패턴은?
컬렉션의 내부 구조를 노출하지 않고 요소들에 순차적으로 접근하게 하는 행위 패턴으로, Cursor라고도 불리는 것은?
GoF 디자인 패턴 중 객체 간의 상호작용과 책임 분배를 다루는 패턴 분류는? (Observer, Strategy, Command 등이 속함)
서로 호환되지 않는 인터페이스를 변환해 클래스들을 함께 동작하게 하는 구조 패턴은?
실제 객체에 대한 접근을 제어하기 위해 대리 객체를 두는 구조 패턴은?
① 추상부와 구현부를 분리해 독립적으로 확장할 수 있게 하는 구조 패턴 ② 객체 상태 변화 시 등록된 객체들에게 자동으로 통지하는 행위 패턴
다음 설명에 해당하는 디자인 패턴을 보기에서 골라 쓰시오.
구체적인 클래스를 명시하지 않고 서로 관련되거나 의존적인 객체들의 집합을 생성하기 위한 인터페이스를 제공한다. ‘Kit’라고도 한다.
ㄱ. Builder
ㄴ. Factory Method
ㄷ. Abstract Factory
ㄹ. Prototype
① 복잡한 서브시스템들을 하나의 단순한 통합 인터페이스로 제공하여 사용을 쉽게 하는 구조 패턴 ② 객체의 상태를 저장해 두었다가 필요할 때 이전 상태로 복원(Undo)할 수 있게 하는 행위 패턴
① 알고리즘군을 각각 캡슐화하여 실행 중에 동적으로 교체할 수 있게 하는 행위 패턴 ② 요청 자체를 객체로 캡슐화하여 요청의 저장·취소(Undo)·큐잉이 가능하게 하는 행위 패턴
왜 이걸 하나 — 패턴은 같은 무리 안의 이웃과 바꿔 적어서 깎인다.
| 자리 | 새는 꼴 | 적는 법 | 기출 |
|---|---|---|---|
| Factory 둘 | Abstract Factory 자리에 Factory Method | 「군 · 집합 · Kit」면 Abstract Factory, 「하위 클래스가 결정」이면 Factory Method | 2024-1회 20번 · 2026-2회 17번 |
| 감싸는 넷 | Proxy 를 Adapter 나 Decorator 로 | 접근 제어 = Proxy, 변환 = Adapter, 단순화 = Facade, 기능 추가 = Decorator | 2023-1회 11번 · 2025-1회 14번 · 2025-2회 7번 |
| Undo 둘 | Memento 자리에 Command | 상태 저장 · 복원 = Memento, 요청 객체화 · 큐잉 = Command | 예상 1회 18번 · 예상 2회 18번 |
| Bridge · Adapter | 둘을 바꾼다 | 「추상과 구현 분리 · 독립 확장」 = Bridge, 「호환 안 되는 인터페이스」 = Adapter | 2026-1회 3번 |
| 표기 | 「이터레이터」를 「이터레이션」으로, 「옵저버」를 「옵서버」로 | 영문으로 적으면 안전 — Iterator · Observer | 2024-2회 7번 · 2026-1회 3번 |
| 분류 이름 | 「행동 패턴」「동작 패턴」 | 행위(Behavioral) 패턴. 생성(Creational) · 구조(Structural) | 2024-3회 8번 |
| 보기 기호 | 보기가 있는데 이름을 적는다 | 「기호로」면 ㄷ, 「골라 쓰시오」면 보기의 표기 그대로 | 2026-2회 17번 |
영문 표기는 대소문자를 문제의 보기대로 따른다. 보기가 없으면 첫 글자 대문자(Abstract Factory · Chain of Responsibility)가 가장 흔한 정답표 표기다.
왜 이걸 하나 — 기출에 아직 안 나온 15개 중 12개가 여기 있다.
5문항은 분류, 구조 셋(Composite · Decorator · Flyweight), 행위 넷(Template Method · Chain of Responsibility · Mediator · State), 생성 셋(Builder · Prototype · Factory Method), MVC 다. 정답은 GoF 정의로 대조했다.
다음 GoF 패턴을 생성 · 구조 · 행위로 분류하시오.
Factory Method, Decorator, Template Method, State, Builder, Composite
다음 설명에 해당하는 구조 패턴을 각각 쓰시오.
① 객체들을 트리 구조로 구성해 부분과 전체를 같은 방식으로 다룬다
② 객체에 동적으로 새로운 기능(책임)을 덧붙인다
③ 많은 수의 작은 객체를 공유해 메모리를 아낀다
다음 설명에 해당하는 행위 패턴을 각각 쓰시오.
① 알고리즘의 뼈대를 상위 클래스에 두고 세부 단계만 하위 클래스가 재정의한다
② 요청을 처리할 수 있는 객체들을 사슬로 엮어 차례로 넘긴다
③ 객체 간의 복잡한 상호작용을 중재자 객체 하나에 모은다
④ 객체의 내부 상태에 따라 행동이 바뀌게 한다
생성 패턴 중 다음 설명에 해당하는 것을 각각 쓰시오.
① 복잡한 객체를 단계별로 조립해 만들고, 같은 절차로 다른 표현을 만들 수 있다
② 원본 객체를 복제해 새 객체를 만든다
③ 객체 생성을 하위 클래스에 맡겨 어떤 클래스의 인스턴스를 만들지 하위 클래스가 정한다
MVC 아키텍처 패턴의 세 요소가 각각 맡는 일을 쓰시오.
① Model ② View ③ Controller
왜 이걸 하나 — 아래를 안 보고 적을 수 있어야 이 장이 끝난다.