생성패턴, 구조패턴, 행동패턴 |
I. 유용한 공통의 설계 구조 목록, 디자인패턴의 개요
가. 디자인패턴(Design Pattern)의 정의
- 재사용이 가능한 객체지향 설계를 선택하게 하기 위해 유용한 공통의 설계 구조로부터 중요 요소들을 식별하여 추상화한 설계 템플릿
나. 디자인패턴의 목적
RAD |
재사용을 통한 올바른 설계를 빨리 수행하는 것이 목적 |
노하우전수 |
전문가들의 노하우를 통해 좋은 SW를 설계하기 위한 목적 |
II. 디자인패턴의 요소 및 원칙
가. 디자인 패턴의 4가지 요소
- 패턴이름, 문제, 해법, 결과
나. 디자인 패턴의 원칙
- 캡슐화, 위임, 인터페이스, Loosely Coupled, 개방 및 폐쇄, 의존관계
III. 디자인패턴의 분류 (생구행)
분류 |
디자인 패턴 |
설명 |
생성패턴 (Creation Pattern) |
Singleton |
클래스의 인스턴스가 하나임을 보장하고 접근할 수 있는 전역적인 접근점을 제공하는 패턴 |
Abstract Factory |
구체적인 클래스를 지정하지 않고 관련성이 있거나, 독립적인 객체들을 생성하기 위한 인터페이스를 제공하는 패턴 |
|
Builder |
복합 객체의 생성 과정과 표현 과정을 분리시켜 동일한 생성과정에서 다양한 표현을 생성할 수 있는 패턴 |
|
Factory Method |
객체를 생성하는 인터페이스를 정의하지만, 인스턴스를 만드는 클래스는 서브클래스에서 결정하도록 하는 패턴 |
|
Prototype |
생성할 객체의 종류를 명시하는 데 원형이 되는 예시물을 이용하고 새로운 객체를 이 원형들을 복사함으로써 생성하는 패턴 |
|
구조패턴 (Structural Pattern) |
Adapter (Wrapper) |
클래스의 인터페이스를 사용자가 기대하는 다른 인터페이스로 변환하는 패턴 |
Bridge |
구현부에 추상층을 분리하여 각자 독립적으로 변형할 수 있도록 하는 패턴 |
|
Composite |
객체들의 관계를 트리 구조로 구성하여 부분-전체 계층을 표현하는 패턴 사용자가 단일 / 복합 객체 모두 동일하게 다루도록 하는 패턴 |
|
Decorator |
주어진 상황 및 용도에 따라 어떤 객체에 책임을 덧붙이는 패턴 기능 확장이 필요할 때 서브클래스 대신 쓸 수 있는 대안 |
|
Facade |
서브시스템에 있는 인터페이스 집합에 통합된 하나의 인터페이스를 제공 서브시스템을 좀 더 쉽게 사용하기 위해 고수준의 인터페이스를 정의 |
|
Proxy |
어떤 다른 객체로 접근하는 것을 통제하기 위해 그 객체의 매니저 또는 자리 채움자를 제공하는 패턴 |
|
행동패턴 (Behavioral Pattern) |
Chain of Responsibility |
요청을 처리하는 기회를 하나 이상의 객체에 부여하여 요청을 보내는 쪽과 받는 쪽의 결합을 피하는 패턴 요청을 받는 객체를 연쇄적으로 묶고 객체를 처리할 수 있을 때까지 요청을 전달 |
Command |
요청을 객체로 캡슐화하여 서로 다른 사용자의 매개변수화, 요청 저장 또는 로깅, 연산의 취소를 지원하게 만드는 패턴 |
|
Interpreter |
주어진 언어에 대해서 문법을 위한 표현수단을 정의하고, 해당 언어로 된 문장을 해석하는 해석기를 사용하는 패턴 |
|
Iterator |
내부 표현부를 노출하지 않고 어떤 객체 집합의 원소들을 순차적으로 접근할 수 있는 방법을 제공하는 패턴 |
|
Mediator |
한 집합에 속해있는 객체들의 상호작용을 캡슐화하는 객체를 정의하는 패턴 중재자는 객체들이 직접 서로 참조하지 않도록 함으로써 객체들 간의 느슨한 연결을 촉진시키며 객체들의 상호작용을 독립적으로 다양화 처리 |
|
Observer |
객체들 사이에 1 : N 의 의존관계를 정의하여 어떤 객체의 상태가 변할 때, 의존관계에 있는 모든 객체들이 통지 받고 자동으로 갱신될 수 있게 만드는 패턴 |
|
State |
객체의 내부 상태가 변경될 때 행동을 변경하도록 허락하는 패턴 |
|
Strategy |
동일 계열의 알고리즘들을 정의하고, 각각 캡슐화 하며 이들을 상호교환 가능하도록 만드는 패턴 알고리즘을 사용하는 사용자로부터 독립적으로 알고리즘이 변경될 수 있도록 하는 패턴 |
|
Template |
객체의 연산에서 알고리즘의 뼈대만 정의하고, 나머지는 서브클래스에서 이루어지게 하는 패턴 템플릿패턴은 알고리즘의 구조는 변경하지 않고 알고리즘의 각 단계를 서브클래스에서 재정의 |
|
Visitor |
객체 구조를 이루는 원소에 대해 수행할 연산을 표현하는 패턴 방문자는 연산에 적용할 원소의 클래스를 변경하지 않고 새로운 연산을 재정의 |
'IT기술노트 > 소프트웨어공학' 카테고리의 다른 글
TDD(Test-Driven Development) (0) | 2021.02.01 |
---|---|
웹 접근성(Web Accessibility) (0) | 2021.02.01 |
UX (User eXperience) (0) | 2021.02.01 |
클래스 재사용 (0) | 2021.01.31 |
MSA(Micro Service Architecture) (0) | 2021.01.31 |
콜백함수 (0) | 2021.01.31 |
IoC (Inversion of Control) (0) | 2021.01.31 |
전자정부 프레임워크 (0) | 2021.01.31 |
댓글