디자인 패턴

디자인 패턴: 소프트웨어 공학의 소프트웨어 설계에서 공통으로 발생하는 문제에 대해 자주 쓰이는 설계 방법을 정리한 패턴

즉, 여러가지 기존의 설계 사례를 통해 비슷한 문제를 해결하기 위한 설계로 분류하고 유형별로 가장 적합한 설계를 일반화하여 패턴으로 정립

GoF 의 디자인 패턴은 목적에 따라 생성, 구조 , 행위 패턴으로 분류

 

생성 패턴: 객체의 생성과 참조 과정을 추상화 하여 특정 객체의 생성과정을 분리한다.

Factory method : 객체 생성을 직접 하지 않고 하위 클래스에 위임

Singleton : 프로세스가 실행중일때 오직 하나의 객체만 생성된다

Builder : 복잡한 객체의 생성 과정을 단순화하고, 객체를 단계적으로 생성하며 구성하는 패턴

 

구조 패턴 : 클래스나 객체의 구성으로 더 큰 구조를 만들어야 할 때 사용 (동적 결합)

Decorater : 기본 클래스를 조합 해서 많은 클래스를 만들 때 사용

Adapter : 호환성이 맞지 않는 클래스를 사용하기 위한 Wrapper 제공

Bridge : 추상화와 구현을 분리하여 두 가지를 독립적으로 확장할 수 있는 패턴이

Composite : 개별 객체와 복합 객체를 동일하게 다루어, 트리 구조의 객체를 구성하는 패턴

 

행위 패턴 : 반복적으로 사용되는 객체의 상호작용을 패턴화한 것으로 클래스나 객체가 상호작용하는 방법과 책임을 분산하는 방법

Strategy : 클래스 설계시에 메서드가 계속 바뀌어 나가는 구조를 갖는다면 strategy 패턴을 사용

State : 상태가 계속 바뀌는 것을 클래스로 만들고, 이를 인터페이스 타입의 상속구조로 만들어 상태의 변경이 그 클래스 안에서만 이루어지도록 하여 메인 클래스에 영향을 최소화

Observer : 객체 간의 일대다 종속 관계를 정의하여 한 객체의 상태 변경이 다른 객체들에게 알려지도록 한다

Command : 요청을 객체로 캡슐화하여 요청을 매개변수화 하고, 요청을 큐에 저장하거나 로깅하고 실행을 지연

Interpreter : 언어나 문법에 대한 해석기를 제공하여, 주어진 언어로 표현된 문제를 해결하는 패턴

'Computer Science > Software Engineering' 카테고리의 다른 글

[S/E] 파싱(Parsing)이란?  (0) 2024.08.04