Software Design Pattern
일반적인 의미에서의 Design Pattern이라고 말하며,
- 반복되는 문제에 대한 일반 솔루션 또는 재사용 가능한 solution
- 무한한 가능성을 창출하기 위해(또는 다양한 문제에 대한 수많은 해결책을 제공하기 위해) 다양한 방법으로 조정되고 결합될 수 있다.
Software Design Pattern
다양한 응용 프로그램에 쉽게 적응할 수 있는 소프트웨어 설계의 반복되는 (많은 유사한) 문제에 대한 해결책에 대한 재사용 가능한 설명
Software Design Pattern 사용 목적
- 상대적으로 적은 수의 설계 패턴으로 경험을 문서화합니다.
- 효과가 입증된 설계의 재사용 지원
- 소프트웨어 설계자가 다양한 소프트웨어 설계에 대해 소통할 수 있는 공통 어휘를 제공한다.
- 소스 코드(또는 사소한 변경)를 수정할 필요 없이 다양한 컨텍스트에서 확장, 조정 및 재사용할 수 있는 프로그램 구성 요소
OODP란?
흔히 전공자들에게 OODP(Object Oriented Design Pattern)라고 불리는 객체 지향 디자인 패턴입니다. 객체 지향형 프로그래밍으로 코드를 작성할 때 종종 발생하는 문제들을 사전에 방지하고자 사용되는 패턴입니다. 코드를 작성할 시에 원치않는 결과나 버그를 미연에 방지하고 성능을 최적화하기 위해서 디자인 패턴을 주로 이용합니다.
Design Pattern Concept
디자인의 컨셉에는 크게 3가지가 있으며, 다음과 같습니다.
Creational Pattern - 생성 패턴
Abstract factory pattern - 객체의 구체적인 클래스를 지정하지 않고 관련 또는 종속 객체를 만들 수 있는 인터페이스를 제공합니다.
Builder pattern - 복잡한 객체의 생성과 표현을 구분하여 동일한 생성 프로세스가 다른 표현을 만들 수 있도록 합니다.
Factory method pattern - 클래스가 인스턴스화를 하위 클래스로 연기할 수 있습니다
Prototype pattern - 프로토타입 인스턴스를 사용하여 생성할 객체의 종류를 지정하고 이 프로토타입을 복제하여 새로운 객체를 만듭니다.
Singleton pattern - 클래스에 인스턴스가 하나만 있고 전역 액세스 지점을 제공합니다.
Behavioral Pattern - 행동 패턴
Chain of responsibility pattern - 클라이언트 서비스가 서버 object의 체인에 전달되어야 합니다.
Command pattern - 호출자, 수신기 및 명령 예제...
Iterator pattern - 반복기는 기본 표현을 노출하지 않고 aggregate object의 요소에 순차적으로 액세스하는 데 사용됩니다.
Memento pattern - 개체를 이전 상태로 복원하는 기능을 제공합니다(rollback).
Mediator pattern - 하위 시스템의 인터페이스 집합에 통일된 인터페이스를 제공합니다.
Observer pattern - 분산 이벤트 처리
Strategy pattern - 알고리즘을 즉시 선택할 수 있습니다.
Visitor pattern - 알고리즘을 객체와 분리하는 방법
Structural patterns - 구조 패턴
Adapter pattern - 기존 클래스의 코드를 변경하지 않고 기존 클래스가 다른 기존 클래스 라이브러리에서 작동하도록 할 수 있습니다.
Bridge pattern - 추상화를 구현에서 분리하여 두 가지가 독립적으로 변할 수 있도록 한다.
Composite pattern - 모든 객체가 동일한 인터페이스를 갖는 객체의 트리 구조
Decorator pattern - 런타임에 클래스에 하위 클래싱으로 인해 새 클래스가 기하급수적으로 증가합니다.
Facade pattern - 기존 인터페이스의 단순화된 인터페이스를 생성하여 일반적인 작업에 쉽게 사용할 수 있습니다.
Flyweight pattern - 많은 양의 객체가 공간을 절약하기 위해 공통 속성 객체를 공유합니다.
Proxy pattern - 다른 것에 대한 인터페이스로 작동하는 클래스