정보처리기사 필기 : 디자인 패턴 정리, 기출문제
디자인 패턴이란 ?
각 모듈의 세분화된 역할 or 모듈들 간 인터페이스와 같은 코드를 작성하는 수준의 세부적인 구현 방안을 설계할 때 참조할 수 있는 전형적인 해결 방식 또는 예제
✔ 디자인패턴의 특징
1) 재사용 가능한 기본형 코드들이 포함되어 있음
2) 개발 과정 중 문제가 발생하면 문제에 해당하는 디자인 패턴을 참고하여 적용하는 것이 더 효율적
3) 한 패턴에 변형을 가하거나 특정 요구사항을 반영하면 유사한 형태의 다른 패턴으로 변화
4) 1995년 GoF가 처음으로 구체화 및 체계화
5) GoF의 디자인 패턴은 가장 일반적 사례에 적용될 수 있는 패턴들을 분류하여 정리함. 가장 많이 사용되는 디자인 패턴
종류 : 생성, 구조, 행위 패턴
생성 패턴이란?
- 생성 패턴 (객체를 생성하는 여러 방법을 알려주는 패턴)
: Singleton, Builder, Prototype, Factory Method, Abstract Factory
* Singleton 싱글톤 패턴 : 클래스 인스턴스가 하나임을 보장, 전역적인 접근점을 제공하는 패턴 / 디자인패턴의 가장 기초
* Abstract 추상 팩토리 패턴 : 구체적인 클래스를 지정하지않고 독립적인 객체들을 생성하기 위해 인터페이스를 제공하는 패턴
* Builder 빌더 패턴: 복학 객체의 생성과정과 표현과정을 분리시켜 동일한 생성 과정에서 다양한 표현을 생성할 수 있는 패턴
* Factory Method 팩토리 메서드 패턴: 인스턴스를 만드는 클래스를 서브 클래스에서 결정하도록 하는 패턴
* Prototype 프로토타입패턴 : 생성할 객체의 종류를 명시하는데 원형이 되는 예시물을 이용하고 새로운 객체를 이 원형들을 복사함으로써 생성하는 패턴
구조 패턴이란?
- 구조 패턴 (클래스를 확장할 수 있는 구조로 만드는 방법을 알려주는 패턴)
: Adapter, Bridge, Composite, Decorator, Flyweight, Facade, Proxy -> ABCDFFP
* Adapter (or Wrapper) 적응자 패턴 : 호환성이 없는 인터페이스 떄문에 함께 동작할 수 없는 클래스들이 함께 작동하도록 해주는패턴
* Bridge 브릿지 패턴 : 구현부에 추상층을 분리하여 각자 독립적으로 변형할 수 있도록 하는 패턴
* Composite 컴포지트 패턴 : 객체들의 관계를 트리구조로 구성하여 부분 -전체 계층을 표현하는 패턴
* Decorator 데코레이터 패턴 : 주어진 상황 및 용도에 따라 어떤 객체에 책임을 덧붙이는 패턴, 기능확장이 필요 시 서브 클래스 대신 쓸 수 있는 대안이 됨
* Facade 패턴 : 서브시스템에 있는 인터페이스 집합에 통합된 하나의 인터페이스를 제공
* Proxy 프록시 패턴 : 어떤 다른 객체로 접근하는 것을 통제하기 위해 그 객체의 매니저 또는 자리 채움자를 제공하는 패턴
행동 패턴이란?
행동 패턴 (기존 객체를 저장하거나 다른 객체와 연결시키는 것에 집중)
: Observer, Command, Interpreter, State, Strategy, Template Method, Visitor, Iterator, Memento, Mediator, Chain of Responsibility
* Observer (2020 2회실기 영문)
한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들한테 연락이 가고 자동으로 내용이 갱신되는 방법으로 일대 다 의존성을 가지는 디자인 패턴과 서로 상호작용을 하는 객체 사이에서는 가능하면 느슨하게 결합하는 디자인을 사용해야한다.
* Chain of Responsibility 패턴 : 요청을 처리하는 기회를 하나 이상의 객체에 부여하여 요청을 보내는 쪽과 받는 쪽의 결합을 피하는 패턴
* Command 패턴 : 요청을 객체로 캡슐화하여 서로 다른 사용자의 매개변수화, 요청 저장 또는 로깅, 연산의 취소를 지원하게 만드는 패턴
* Interpreter 패턴 : 주어진 언어에 대해서 문법을 표현수단으로 정의하고, 해당 언어로 된 문장을 해석하는 해석기를 사용하는 패턴
* Mediator 패턴: 한 집합에 속해 있는 객체들의 상호 작용을 캡슐화하는 객체를 정의하는 패턴
* State 상태 패턴 : 객체의 내부 상태가 변경될 때 행동을 변경하도록 허락합니다. 객체는 자신의 클래스가 변경되는 것처럼 보임
* Strategy 전략 패턴 : 동일 계열의 알고리즘들을 정의하고 각각 캡슐화하며 이들을 상호교환 가능하도록 만드는 것, 사용자로부터 독립적으로 알고리즘이 변경 될 수 있도록 하는 패턴
* Template 템플릿 패턴 : 객체의 연산에서 알고리즘의 뼈대만 정의하고, 나머지는 서브클래스에서 이루어지게하는 패턴
* Visitor 비지터패턴 : 객체 구조를 이루는 원소에 대해 수행할 연산을 표현합니다.
기출예제 -20년도
GoF의 디자인 패턴에서 행위 패턴에 속하는 것은?
1. Builder 생성패턴
>> 2. Visitor
3.Prototype 생성패턴
4.Briidge 구조패턴
디자인 패턴 단답형 문제 정리