[오답정리] 디자인 패턴(Design Pattern)
1과목. 소프트웨어 설계 > 1장. 요구사항 확인 > 디자인 패턴 : 구조 패턴 유형, 디자인 패턴 구성, 디자인 패턴 분류, 생성 패턴 유형, 행위 패턴 유형
1. 패턴
- GoF의 디자인 패턴
- 소프트웨어 설계에 있어 공통된 문제들에 대한 표준적인 해법과 작명법을 제안한 책
- Gang of Four 전문가 서술 : 에리히 감마, 리처드 헬름, 랄프 존슨, 존 블리시데스
- 패턴의 개념 : 각기 다른 소프트웨어 모듈이나 기능을 가진 다양한 응용 소프트웨어 시스템을 개발할 때 서로 간에 공통되는 설계 문제 및 해결 점
- 패턴의 역할 : 공통의 언어 생성, 팀원 사이의 의사소통 원활화
- 패턴의 종류
목적 생성 패턴 (Creation Pattern) 구조 패턴 (Structural Pattern) 행위 패턴 (Behavioral Pattern) 의미 객체의 생성 방식을 결정하는 패턴 객체를 조직화하는데 유용한 패턴 객체의 행위를 조직, 관리, 연합하는데 사용하는 패턴 범위 클래스 Factory method Adapter Template method, Interpreter 객체 Singleton
Abstract factory
Builder
PrototypeBridge
Composite
Decorator
Facade
Fly weight
ProxyIterator
Command
Chain of Responsibility
State
Strategy
Mediator
Memento
Visitor
Observer
- 생성 패턴 (Creation Pattern)
- 객체의 생성 방식을 결정하는 패턴
- 클래스
- Factory method
- 객체를 생성하기 위해 인터페이스를 정의하지만, 어떤 클래스의 인스턴스를 생성할지에 대한 결정은 서브 클래스가 내리도록 함
- 다른 이름 : Virtual Constructor
- 객체
- Singleton
- 오직 한 개의 클래스 인스턴스만을 갖도록 보장하고, 이에 대한 전역적인 접근점 제공
- 지정한 클래스의 인스턴스가 반드시 한 개만 존재하도록 하는 패턴
- Abstract factory
- 상세화된 서브 클래스를 정의하지 않고도 서로 관련성이 있거나 독립적인 여러 객체의 군을 생성하기 위한 인터페이스를 제공
- 다른 이름 : 키트 (Kit)
- Builder
- 인스턴스를 생성자를 통해 직접 생성하지 않고, 빌더라는 내부 클래스를 통해 간접적으로 생성
- Prototype
- 원본을 만들어놓고 원본 객체를 복사하여 사용
- Singleton
- 구조 패턴 (Structural Pattern)
- 객체를 조직화하는데 유용한 패턴
- 클래스
- Adapter
- 클래스의 인터페이스를 사용자가 기대하는 인터페이스 형태로 적응 (변환)
- 서로 일치하지 않는 인터페이스를 갖는 클래스들을 함께 동작
- 다른 이름 : 래퍼 (Wrapper)
- Adapter
- 객체
- Bridge
- 구현에서 추상을 분리하여 각자 독립적으로 다양성을 가질 수 있도록 함
- 다른 이름 : 핸들 / 구현부 (Handle / Body)
- Composite
- 부분과 전체의 계층을 표현하기 위해 객체들을 모아 트리 구조로 구성
- 사용자가 개별 객체와 복합 객체를 모두 동일하게 다룰 수 있도록 하는 패턴
- Decorator
- 객체에 동적으로 새로운 책임을 추가할 수 있게 함
- 기능을 추가하려면, 서브 클래스를 생성하는 것보다 융통성 있는 방법을 제공
- 새로운 기능이 추가(확장)될 때마다 새로운 객체를 만들고, 이전 객체의 기능은 새로운 객체 내부에서도 그대로 유지, 보장해주는 패턴
- Facade
- 서브 시스템에 있는 인터페이스 집합에 통합된 하나의 인터페이스를 제공 (의사소통 및 종속성 최소화 목표)
- 서브 시스템을 좀 더 쉽게 사용하기 위해 상위수준 인터페이스 정의
- Flyweight
- 객체의 내부에서 참조하는 객체를 직접 만드는 것이 아니라, 없다면 만들고, 만들어져 있다면 객체를 공유하는 식으로 객체를 구성하는 방법
- Proxy
- 실제 기능을 수행하는 객체 대신 가상의 객체를 사용해 로직의 흐름을 제어
- 다른 이름 : 대리자
- Bridge
- 행위 패턴 (Behavioral Pattern)
- 객체의 행위를 조직, 관리, 연합하는데 사용하는 패턴
- 클래스
- Template method
- 어떤 작업을 처리하는 일부분을 서브 클래스로 캡슐화해 전체 일을 수행하는 구조는 바꾸지 않으면서 특정 단계에서 수행하는 명세를 변경
- Interpreter
- 주어진 언어에 대해서 문법을 위한 표현 수단을 정의하고, 해당 언어로 된 문장을 해석하는 해석기를 사용하는 패턴
- 집합 객체 요소들의 내부 표현 방식을 공개하지 않고, 순차적으로 접근하는 구조를 제공하는 패턴
- Template method
- 의미
- Interator
- 내부 표현부를 노출하지 않고 어떤 객체 집합의 원소들을 순차적으로 접근하는 방법을 제공하는 패턴
- 다른 이름 : 커서
- Command
- 실행될 기능을 캡슐화함으로써 주어진 여러 기능을 실행할 수 있는 재사용성이 높은 클래스 설계 패턴
- 다른 이름 : 작동, 트랜잭션
- Chain of Responsibility
- 요청을 처리하는 기회를 하나 이상의 객체에 부여하여 요청을 보내는 쪽과 받는 쪽의 결합을 피하는 패턴
- 요청을 받는 객체를 연쇄적으로 묶고 객체를 처리할 수 있을 때까지 요청을 전달
- State
- 객체의 내부 상태에 따라 객체의 행위 내용을 변경
- 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들에게 통지되고, 필요 시 자동으로 내용이 갱신되는 패턴
- 다른 이름 : 상태 표현 객체
- Strategy
- 행위를 클래스로 캡슐화해 동적으로 행위를 자유롭게 바꿀 수 있게 해줌
- 다른 이름 : 정책
- Mediator
- 한 집합에 속해 있는 객체들의 상호작용을 캡슐화하는 객체를 정의하는 패턴
- 중개자는 객체들이 직접 서로 참조하지 않도록 함으로써 객체 간의 느슨한 연결을 촉진하며 객체들의 상호작용을 독립적으로 다양화시킬 수 있도록 해줌
- Memento
- 객체의 상태 정보를 저장, 사용자의 필요에 따라 원하는 시점의 데이터를 복원할 수 있는 패턴
- 다른 이름 : 토큰
- Visitor
- 객체 구조를 이루는 원소에 대해 수행할 연산을 표현
- 방문자는 연산에 적용할 원소의 클래스를 변경하지 않고 새로운 연산을 재정의할 수 있음
- Observer
- 한 객체의 상태 변화에 따라 다른 객체의 상태도 연동되도록 일대다 객체 의존 관계를 구성
- 다른 이름 : 종속자, 게시-구독
- Interator
- 클래스 패턴 : 클래스 간의 관계가 상속을 통하여 정의, 컴파일 시점에 정적으로 결정
- 객체 패턴 : 객체 간의 관계를 다룸, 보통 구성을 통해 정의, 실행 중에 관계가 생성되어 더 동적이고 유연
- 생성 패턴 (Creation Pattern)
800제-1번. GoF(Gang of Four)의 디자인 패턴에서 행위 패턴에 속하는 것은?
① Builder
② Visitor
③ Prototype
④ Bridge
정답 : 2
800제-102번. 다음 내용이 설명하는 디자인 패턴은?
<설명>
- 객체를 생성하기 위한 인터페이스를 정의하여 어떤 클래스가 인스턴스화 될 것인지는 서브 클래스가 결정하도록 하는 것
- Virtual-Constructor 패턴이라고도 함
① Visitor 패턴
② Observer 패턴
③ Factory Method 패턴
④ Bridge 패턴
정답 : 3
800제-108번. 디자인 패턴 중에서 행위 패턴에 속하지 않는 것은?
① 커맨드(Command) 패턴
② 옵저버(Observer) 패턴
③ 프로토타입(Prototype) 패턴
④ 상태(State) 패턴
정답 : 3
800제-406번. GoF(Gangs of Four) 디자인 패턴에 대한 설명으로 틀린 것은?
① factory method pattern은 상위클래스에서 객체를 생성하는 인터페이스를 정의하고
② prototype pattern은 prototype을 먼저 생성하고 인스턴스를 복제하여 사용하는 구조이다.
③ bridge pattern은 기존에 구현되어 있는 클래스에 기능 발생 시 기존 클래스를 재사용할 수 있도록 중간에서 맞춰주는 역할을 한다.
④ mediator pattern은 객체 간의 통제와 지시의 역할을 하는 중재자를 두어 객체지향의 목표를 달성하게 해준다.
정답 : 3
800제-709번. 다음 설명에 해당하는 GoF(Gang of Four) 설계 패턴은?
<설명>
어떤 객체에 책임(responsibility)을 동적으로 추가할 수 있도록 한다.
기능 확장이 필요할 때 새로운 객체를 만들고 이전 객체에 존재하는 기능은 새로운 객체에서도 사용할 수 있도록 보장해준다.
① 장식자(Decorator) 패턴
② 싱글톤(Singleton) 패턴
③ 반복자(Iterator) 패턴
④ 관찰자(Observer) 패턴
정답 : 1
1000제-111번. 다음 중 디자인패턴(Design Pattern)에 대한 설명으로 옳지 않은 것은?
① 반복적으로 나타나는 문제들을 해결해 온 전문가들의 경험을 모아서 정리한 일관된 솔루션
② 디자인패턴이 수행하는 목적에 따라 생성패턴, 구조패턴, 행위패턴으로 구분
③ 프로그래밍 소스코드의 표준화 및 재사용을 통해 생산성 향상을 위한 기법
④ 소프트웨어 프로그래머들이 유용하다고 생각되는 객체(Object)들 간의 일반적인 상호작용 방법을 모은 목록
정답 : 3
1000제-115번. GoF(Gang of Four)의 디자인 패턴에서 구조 패턴에 속하는 것은?
① Builder
② Visitor
③ Prototype
④ Bridge
정답 : 4
1000제-155번. 다음에서 설명하는 디자인 패턴은 무엇인가?
<설명>
- 상황에 따라 알고리즘이 변경할 필요가 있을 때, 각 알고리즘 클래스들을 공통된 인터페이스에 맞게 구현하여 다형성을 활용하는 패턴이다.
- 같은 문제를 해결하는 여러 알고리즘이 클래스별로 캡슐화되어 있고 이들이 필요할 때 교체할 수 있도록함으로써 동일한 문제를 다른 알고리즘으로 해결할 수 있게 하는 디자인 패턴
① Observe
② Adapter
③ Mediator
④ Strategy
정답 : 4
1000제-909번. 다음 설명에 해당하는 GoF(Gang of Four) 설계 패턴은?
<설명>
어떤 객체에 책임(responsibility)을 동적으로 추가할 수 있도록 한다. 기능 확장이 필요할 때 새로운 객체를 만들고, 이전 객체에 존재하는 기능은 새로운 객체에서도 사용할 수 있도록 보장해준다.
① 장식자(Decorator) 패턴
② 싱글톤(Singleton) 패턴
③ 반복자(Iterator) 패턴
④ 관찰자(Observer) 패턴
정답 : 1
1000제-919번. 다음 디자인 패턴을 생성패턴, 구조패턴, 행위패턴 순으로 올바르게 분류한 것은?
<설명>
A. Bridge 패턴
B. Singleton 패턴
C. Interpreter 패턴
① A,B,C
② B,A,C
③ B,C,A
④ C,A,B
정답 : 2