Loading the catalog…
Loading the catalog…
🧩 GoF 디자인 패턴 정리 정보처리기사 실기에서 자주 출제되는 GoF 디자인 패턴 을 문제 중심으로 정리한다. GoF 디자인 패턴은 목적에 따라 크게 다음 세 종류로 구분한다. 생성 패턴(Creational) 구조 패턴(Structural) 행위 패턴(Behavioral) 📌 연습 문제 1. 생성 패턴 구분 다음 설명에 해당하는 생성 패턴을 순서대로 쓰시오. ᄀ. 서로 어울리는 버튼, 창, 메뉴 같은 제품군을 구체 클래스 없이 한 세트로 만든다. ᄂ. 같은 조립 절차를 사용해 서로 다른 형태의 복잡한 결과물을 만든다. ᄃ. 이미 존재하는 원형 객체를 복제해 새 객체를 얻는다. ᄅ. 클래스의 인스턴스를 하나만 만들고 여러 사용자가 같은 인스턴스에 접근한다. 풀이 ᄀ. 관련 객체들을 한 세트로 생성 서로 관련되거나 의존적인 객체들을 구체적인 클래스를 직접 지정하지 않고 제품군 단위로 생성 한다. 관련 객체 제품군 버튼 + 창 + 메뉴 한 세트로 생성 → Abstract Factory ᄂ. 조립 과정을 이용해 복잡한 객체 생성 같은 생성 절차를 사용하면서 최종 결과물은 다르게 만들 수 있다. 복잡한 객체 단계별 조립 같은 과정 → 다른 결과 → Builder ᄃ. 기존 객체 복제 새로운 객체를 처음부터 만드는 대신 기존 객체를 복사하여 생성한다. 원형 객체 복제 Clone → Prototype ᄅ. 인스턴스를 하나만 생성 프로그램 전체에서 객체를 하나만 생성하고 같은 객체를 공유한다. 인스턴스 1개 공유 전역 접근 → Singleton ✅ 답 ᄀ : Abstract Factory ᄂ : Builder ᄃ : Prototype ᄅ : Singleton 2. Adapter · Bridge 다음 두 상황에 해당하는 구조 패턴을 순서대로 쓰시오. ᄀ. 이미 만들어진 결제 모듈의 인터페이스가 새 서비스의 규격과 맞지 않아 중간 변환 객체를 끼웠다. ᄂ. 리모컨 종류와 가전제품 종류가 앞으로 각각 늘어날 수 있어 두 계층을 분리하고 연결 객체를 뒀다. 풀이 ᄀ. 인터페이스 변환 기존 클래스 자체를 수정하지 않고 중간 객체를 이용하여 원하는 인터페이스로 변환한다. 기존 인터페이스 ↓ 변환 ↓ 새 인터페이스 → Adapter ᄂ. 추상화와 구현 분리 기능을 담당하는 계층과 실제 구현을 담당하는 계층을 분리하여 각각 독립적으로 확장할 수 있게 한다. 추상화 계층 ↔ 구현 계층 서로 독립적으로 확장 → Bridge ✅ 답 ᄀ : Adapter ᄂ : Bridge 3. Proxy · Decorator · Facade 다음 역할에 해당하는 패턴을 순서대로 쓰시오. ᄀ. 실제 객체 앞에서 권한을 검사하고 필요할 때만 실제 객체를 만든다. ᄂ. 기존 인터페이스를 유지하면서 감싼 객체에 기능을 겹쳐 더한다. ᄃ. 복잡한 여러 하위 시스템을 단순한 하나의 진입 창구로 감춘다. 풀이 ᄀ. 실제 객체 대신 대리 객체 사용 클라이언트가 실제 객체에 직접 접근하지 않고 대리 객체를 거치게 한다. 접근 제어 권한 검사 지연 생성 대리 객체 → Proxy ᄂ. 객체를 감싸 기능 추가 기존 객체의 인터페이스는 유지하면서 객체를 감싸 새로운 기능을 추가한다. 기존 객체 ↓ Decorator로 감싸기 ↓ 기능 추가 → Decorator ᄃ. 복잡한 시스템에 단순한 창구 제공 여러 개의 복잡한 하위 시스템을 직접 호출하는 대신 하나의 단순한 인터페이스를 제공한다. 복잡한 여러 시스템 ↓ 하나의 단순한 창구 → Facade ✅ 답 ᄀ : Proxy ᄂ : Decorator ᄃ : Facade 4. Observer · Mediator 한 뉴스 채널의 새 소식이 등록된 구독자 모두에게 자동 전송되는 방식과, 여러 항공기의 요청을 관제탑 하나가 받아 충돌 없이 조정하는 방식에 해당하는 패턴을 순서대로 쓰시오. 풀이 뉴스 채널과 구독자 한 객체의 상태가 변경되면 해당 객체를 구독하고 있는 여러 객체에 자동으로 알린다. Publisher ↓ Observer 1 Observer 2 Observer 3 상태 변화 구독자에게 자동 알림 1 : N → Observer 항공기와 관제탑 객체들이 서로 직접 통신하지 않고 중간의 중재 객체를 통해 통신한다. 항공기 A ─┐ 항공기 B ─┼→ 관제탑 → 조정 항공기 C ─┘ 중앙 중재자 객체 간 직접 통신 감소 → Mediator ✅ 답 Observer, Mediator 5. Strategy · State 내비게이션 사용자가 최소 거리와 최단 시간 계산법 가운데 하나를 선택하는 경우와, 주문 객체가 결제 대기, 결제 완료, 취소라는 내부 상태에 따라 같은 요청에 다르게 반응하는 경우의 패턴을 순서대로 쓰시오. 풀이 알고리즘을 선택 여러 알고리즘을 각각 객체로 만들어 필요에 따라 교체한다. 최단 거리 알고리즘 최단 시간 알고리즘 사용자가 선택 → Strategy 객체 상태에 따라 행동 변화 같은 객체라도 내부 상태가 달라지면 행동이 달라진다. 결제 대기 결제 완료 취소 상태에 따라 행동 변경 → State ✅ 답 Strategy, State 6. 행위 패턴 구분 다음 설명에 해당하는 행위 패턴을 순서대로 쓰시오. ᄀ. 요청을 객체로 만들어 저장, 대기열 처리, 취소를 가능하게 한다. ᄂ. 요청을 처리할 객체를 만날 때까지 처리자 사슬을 따라 넘긴다. ᄃ. 컬렉션 내부 표현을 노출하지 않고 원소에 차례로 접근한다. ᄅ. 객체 구조를 바꾸지 않고 원소에 적용할 새 연산을 별도 객체로 추가한다. ᄆ. 상위 클래스가 알고리즘 골격을 정하고 하위 클래스가 일부 단계를 재정의한다. 풀이 ᄀ. 요청을 객체로 캡슐화 실행할 요청 자체를 하나의 객체로 만든다. 요청 객체화 저장 Queue Undo → Command ᄂ. 처리자에게 계속 전달 현재 객체가 처리할 수 없으면 다음 처리자에게 요청을 넘긴다. 요청 ↓ 처리자 A ↓ 처리자 B ↓ 처리자 C → Chain of Responsibility ᄃ. 컬렉션 순회 컬렉션의 내부 구조를 직접 노출하지 않고 요소를 하나씩 접근한다. hasNext() next() → Iterator ᄅ. 객체 구조는 그대로 두고 연산 추가 기존 객체 구조를 수정하지 않으면서 새로운 연산을 추가한다. 객체 구조 유지 새로운 연산 추가 각 객체 방문 → Visitor ᄆ. 알고리즘의 전체 틀 제공 상위 클래스에서 알고리즘의 전체 흐름을 정의하고 세부 단계만 하위 클래스에서 구현한다. 전체 흐름 → 부모 클래스 일부 단계 → 자식 클래스 → Template Method ✅ 답 ᄀ : Command ᄂ : Chain of Responsibility ᄃ : Iterator ᄅ : Visitor ᄆ : Template Method 📚 2020~2026년 관련 기출문제 📌 2020년 2회 10번 다음 보기가 설명하는 패턴을 쓰시오. 영문 Full-Name으로 작성하시오. 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들에게 연락이 가고 자동으로 내용이 갱신되는 방법으로 일대 다의 의존성을 가지며 상호작용하는 객체 사이에서는 가능하면 느슨하게 결합하는 디자인을 사용해야 한다. 풀이 핵심 키워드는 한 객체의 상태 변화 다른 객체들에게 자동 전달 1 : N 느슨한 결합 이다. 이는 Observer Pattern 의 특징이다. ✅ 답 Observer Pattern 📌 2020년 4회 2번 목적에 따른 디자인 패턴의 유형에는 생성, 구조, ( ) 이/가 있다. 괄호 ( ) 안에 알맞은 유형을 쓰시오. 풀이 GoF 디자인 패턴은 목적에 따라 세 가지로 분류한다. 생성 패턴 구조 패턴 행위 패턴 ✅ 답 행위 📌 2021년 2회 13번 괄호 ( ) 안에 알맞은 단어를 쓰시오. 디자인 패턴 중에서 ( ) 패턴은 반복적으로 사용되는 객체들의 상호작용을 패턴화한 것으로, 클래스나 객체들이 상호작용하는 방법이다. 알고리즘의 패턴에는 Interpreter, Observer, Command가 있다. 풀이 문제에서 객체들의 상호작용 책임 분배 Observer Command Interpreter 가 등장한다. 이들은 모두 행위 패턴 에 속한다. ✅ 답 행위(Behavioral) 📌 2021년 3회 16번 다음 설명에 해당하는 디자인 패턴을 쓰시오. ( ) 패턴은 객체지향 디자인 패턴이다. 부모(상위) 클래스에 알려지지 않은 구체 클래스를 생성하는 패턴이며, 자식(하위) 클래스가 어떤 객체를 생성할지를 결정하도록 하는 패턴이기도 하다. 부모(상위) 클래스 코드에 구체 클래스 이름을 감추기 위한 방법으로도 사용한다. 풀이 객체 생성 자체는 상위 클래스에서 정의하지만 어떤 객체를 만들 것인가? 는 하위 클래스에서 결정한다. 객체 생성 ↓ 하위 클래스가 결정 → Factory Method ✅ 답 Factory Method 📌 2022년 3회 3번 다음은 디자인 패턴에 대한 설명이다. 괄호 안에 알맞은 답을 작성하시오. (1)은/는 기능을 처리하는 추상화 계층과 실제 구현을 담당하는 구현 계층을 분리하여, 두 계층이 독립적으로 변경될 수 있도록 하는 패턴이다. 구현뿐 아니라 추상화도 독립적인 확장이 필요할 때 사용한다. 기능 계층과 구현 계층을 연결하는 다리 역할을 하며, 기능 확장과 구현 변경을 서로 분리할 수 있다. (2)은/는 한 객체의 상태가 변화하면 그 객체에 의존하는 다른 객체들에게 변화된 상태를 전달해주는 패턴이다. 일대다 관계를 가지며, 주로 분산된 시스템 간에 이벤트를 생성, 발행(Publish)하고 이를 수신(Subscribe)해야 할 때 이용한다. 풀이 1 추상화와 구현 분리 추상화 계층 ↕ 구현 계층 독립적 확장 → Bridge 2 상태 변화 자동 전달 상태 변화 Publish / Subscribe 1 : N → Observer ✅ 답 (1) Bridge (2) Observer Pattern 📌 2023년 1회 11번 다음 설명에 해당하는 디자인 패턴을 쓰시오. 실제 객체를 직접 참조하는 대신 대리 객체를 앞에 둔다. 대리 객체는 접근 제어, 지연 생성, 로깅 같은 부가 작업을 처리한 뒤 실제 객체에 요청을 전달한다. 풀이 핵심 키워드는 대리 객체 접근 제어 지연 생성 로깅 이다. 이는 Proxy 패턴 이다. ✅ 답 Proxy 📌 2023년 2회 11번 디자인 패턴 설명을 읽고 1과 2에 들어갈 패턴을 쓰시오. 1 클래스의 인스턴스를 하나만 만들고 어디서든 그 인스턴스에 접근하게 한다. 2 객체 구조의 원소를 바꾸지 않고 새로운 연산을 추가하며, 각 원소를 방문해 작업을 수행한다. 풀이 1 인스턴스 하나 객체 1개 공유 전역 접근 → Singleton 2 구조를 바꾸지 않고 연산 추가 객체 구조 유지 새로운 연산 추가 원소 방문 → Visitor ✅ 답 1 Singleton 2 Visitor 📌 2024년 1회 20번 다음 설명에 해당하는 GoF 디자인 패턴을 쓰시오. 구체적인 클래스를 지정하지 않고 서로 관련되거나 의존적인 객체들의 제품군을 생성하는 인터페이스를 제공한다. 제품군 전체를 일관되게 교체해야 할 때 사용한다. 풀이 핵심은 구체 클래스 지정 X 관련 객체 제품군 제품군 전체 생성 이다. 이는 Abstract Factory 이다. ✅ 답 Abstract Factory 📌 2024년 2회 10번 다음 설명에 해당하는 GoF 디자인 패턴을 쓰시오. 컬렉션의 내부 표현을 노출하지 않고 원소를 차례대로 접근할 수 있게 한다. hasNext와 next 같은 동작으로 순회 책임을 별도 객체에 맡긴다. 풀이 컬렉션 순차 접근 hasNext() next() 가 핵심이다. 이는 Iterator 패턴 이다. ✅ 답 Iterator 📌 2024년 3회 6번 괄호에 공통으로 들어갈 GoF 디자인 패턴 분류를 쓰시오. ( ) 패턴은 객체들이 상호작용하는 방법과 책임 분배를 정의한다. 객체 사이의 통신 방법을 다루고 알고리즘을 캡슐화해 결합도를 낮춘다. Chain of Responsibility, Command, Observer가 여기에 속한다. 풀이 Chain of Responsibility Command Observer 는 모두 행위 패턴 이다. ✅ 답 행위 📌 2025년 1회 14번 다음 설명에 해당하는 디자인 패턴을 쓰시오. 호환되지 않는 인터페이스를 가진 기존 객체를 감싸 클라이언트가 원하는 인터페이스로 바꿔 준다. 기존 클래스의 내부 코드는 수정하지 않는다. 풀이 기존 객체 수정 X 호환되지 않는 인터페이스 원하는 인터페이스로 변환 따라서 Adapter 이다. ✅ 답 Adapter 📌 2025년 2회 7번 다음 설명에 해당하는 디자인 패턴을 쓰시오. 실제 객체를 바로 사용하지 않는다. 그 객체를 대신하는 대리 객체가 접근을 제어하고 부가 기능도 맡는다. 실제 객체의 생성을 늦추거나 접근 권한을 확인할 때 쓴다. 풀이 대리 객체 접근 권한 지연 생성 이 나오면 Proxy 이다. ✅ 답 Proxy 📌 2026년 1회 2번 다음 설명에 해당하는 디자인 패턴을 각각 쓰시오. 1 기능의 클래스 계층과 구현의 클래스 계층을 분리하고, 두 계층을 연결하여 서로 독립적으로 확장할 수 있게 한다. 2 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들에게 상태 변화를 자동으로 알린다. 풀이 1 기능과 구현 분리 추상화 ↔ 구현 독립적 확장 → Bridge 2 상태 변화 자동 알림 한 객체의 상태 변화 ↓ 여러 객체에 알림 → Observer ✅ 답 1 Bridge 2 Observer 📌 2026년 2회 17번 다음 설명에 해당하는 디자인 패턴을 보기에서 골라 쓰시오. 구체적인 클래스를 명시하지 않고 서로 관련되거나 의존적인 객체들의 집합을 생성하기 위한 인터페이스를 제공한다. Kit 라고도 한다. ᄀ. Builder ᄂ. Factory Method ᄃ. Abstract Factory ᄅ. Prototype 풀이 관련 객체들의 집합 제품군 구체 클래스 명시 X Kit 이 나오면 Abstract Factory 이다. ✅ 답 ᄃ. Abstract Factory 📌 GoF 디자인 패턴 분류 GoF 디자인 패턴은 총 23개 이며 크게 세 종류로 나눈다. 분류 목적 생성 패턴 객체를 어떻게 생성할 것인가 구조 패턴 객체와 클래스를 어떻게 구성할 것인가 행위 패턴 객체들이 어떻게 동작하고 협력할 것인가 🏗️ 생성 패턴 객체의 생성 방식 과 관련된 패턴이다. 패턴 핵심 키워드 Abstract Factory 관련 객체 제품군 생성 Builder 단계별 조립 Factory Method 객체 생성을 하위 클래스가 결정 Prototype 기존 객체 복제 Singleton 인스턴스 하나만 생성 생성 = 객체를 어떻게 만들까? 🧱 구조 패턴 클래스나 객체를 어떻게 조합하고 연결할 것인가 와 관련된다. 패턴 핵심 키워드 Adapter 인터페이스 변환 Bridge 추상화와 구현 분리 Composite 부분과 전체를 동일하게 처리 Decorator 객체를 감싸 기능 추가 Facade 복잡한 시스템의 단순 창구 Flyweight 객체 공유로 메모리 절약 Proxy 대리 객체 🎮 행위 패턴 객체 간의 책임 분배와 상호작용 을 다룬다. 패턴 핵심 키워드 Chain of Responsibility 처리자 사슬 Command 요청 객체화 Interpreter 문법 해석 Iterator 컬렉션 순회 Mediator 중재자 Memento 상태 저장·복원 Observer 상태 변화 자동 알림 State 상태에 따라 행동 변경 Strategy 알고리즘 선택·교체 Template Method 알고리즘 골격 정의 Visitor 구조 변경 없이 연산 추가 🧠 생성 패턴 암기 생성 패턴 5개는 추빌팩프싱 처럼 묶어서 기억할 수 있다. 추 → Abstract Factory 빌 → Builder 팩 → Factory Method 프 → Prototype 싱 → Singleton 시험에서는 이름 자체보다 키워드 연결 이 더 중요하다. 제품군 → Abstract Factory 조립 → Builder 하위 클래스 → Factory Method 복제 → Prototype 하나만 → Singleton 🧠 헷갈리기 쉬운 구조 패턴 Adapter vs Bridge Adapter 이미 존재하는 두 인터페이스가 서로 맞지 않을 때 사용한다. 기존 인터페이스 → 변환 → 원하는 인터페이스 Adapter = 변환기 Bridge 처음부터 기능과 구현을 분리해서 둘 다 독립적으로 확장한다. 추상화 ↔ 구현 Bridge = 두 계층을 연결하는 다리 Proxy vs Decorator 둘 다 객체를 감싼다 는 점 때문에 헷갈리기 쉽다. Proxy 목적은 접근 제어 이다. 권한 검사 지연 생성 접근 제어 대리 객체 Decorator 목적은 기능 추가 이다. 기존 객체 + 기능 + 기능 + 기능 따라서 Proxy = 대신 접근 Decorator = 기능 추가 라고 기억하면 된다. Facade Facade는 여러 복잡한 기능을 하나의 단순한 창구로 제공한다. 복잡한 시스템 여러 개 ↓ Facade ↓ 사용자 Facade = 안내 데스크 라고 생각하면 쉽다. 🧠 Observer vs Mediator Observer 한 객체의 변화가 여러 객체에게 자동 전파 된다. 1 → N 유튜브 채널 → 구독자 뉴스 채널 → 구독자 Mediator 여러 객체가 서로 직접 통신하지 않고 중앙 중재자 를 거친다. A ─┐ B ─┼→ Mediator C ─┘ 관제탑 채팅방 서버 중앙 조정자 🧠 Strategy vs State 둘 다 동작이 바뀐다는 점에서 헷갈릴 수 있다. Strategy 사용할 알고리즘을 선택한다. 최단 거리 최단 시간 통행료 최소 → Strategy 즉 Strategy = 어떤 방법을 사용할까? State 객체의 현재 상태 때문에 행동이 달라진다. 대기 결제 완료 취소 즉 State = 지금 상태가 무엇인가? 🧠 행위 패턴 핵심 키워드 시험에서는 설명 속 단어를 보고 바로 패턴을 떠올리는 것이 중요하다. 요청 객체화 저장 / 취소 / Queue → Command 처리할 때까지 다음 객체로 전달 → Chain of Responsibility hasNext / next 컬렉션 순회 → Iterator 중앙에서 객체들을 조정 → Mediator 상태 변화 자동 알림 1 : N Publish / Subscribe → Observer 상태에 따라 행동 변경 → State 알고리즘 선택 / 교체 → Strategy 알고리즘 골격은 부모 세부 단계는 자식 → Template Method 객체 구조 변경 X 새로운 연산 추가 → Visitor 🔥 시험 직전 최종 암기 생성 Abstract Factory → 관련 객체 제품군 Builder → 단계별 조립 Factory Method → 하위 클래스가 생성 결정 Prototype → 복제 Singleton → 인스턴스 하나 구조 Adapter → 인터페이스 변환 Bridge → 추상화 / 구현 분리 Decorator → 기능 추가 Facade → 단순한 통합 창구 Proxy → 대리 객체 / 접근 제어 행위 Observer → 상태 변화 자동 알림 Mediator → 중앙 중재자 Strategy → 알고리즘 선택 State → 상태에 따라 행동 변경 Command → 요청 객체화 Chain of Responsibility → 처리자 사슬 Iterator → 순차 접근 Visitor → 구조 변경 없이 연산 추가 Template Method → 부모가 골격, 자식이 세부 구현 🔥 한 줄로 기억하기 객체를 만든다 → 생성 패턴 객체를 연결하고 조립한다 → 구조 패턴 객체가 서로 행동하고 협력한다 → 행위 패턴
What RADAR observed and classified to build this opportunity. It is what the source published, not a verification that the offer is still active.
정보처리기사 실기 디자인 패턴(GoF)(문제풀이). 🧩 GoF 디자인 패턴 정리 정보처리기사 실기에서 자주 출제되는 GoF 디자인 패턴 을 문제 중심으로 정리한다. GoF 디자인 패턴은 목적에 따라 크게 다음 세 종류로 구분한다. 생성 패턴(Creational) 구조 패턴(Structural) 행위 패턴(Behavioral) 📌 연습 문제 1. 생성 패턴 구분 다음 설명에 해당하는 생성 패턴을 순서대로 쓰시오. ᄀ. 서로 어울리는 버튼, 창, 메뉴 같은 제품군을 구체 클래스 없이 한 세트로 만든다. ᄂ. 같은 조립 절차를 사용해 서로 다른 형태의 복잡한 결과물을 만든다. ᄃ. 이미 존재하는 원형 객체를 복제해 새 객체를 얻는다. ᄅ. 클래스의 인스턴스를 하나만 만들고 여러 사용자가 같은 인스턴스에…
Open source