본문 바로가기
CS

디자인 패턴(Design Pattern)이란? - 개념 및 종류

by DevPark 2024. 3. 17.

1. 개념

디자인 패턴은 소프트웨어 개발에서 자주 발생하는 문제를 해결하기 위한 재사용 가능한 해결책이다.

이러한 패턴들은 공통된 디자인 문제에 대한 해결책을 제공하며, 개발자들이 이러한 문제에 직면했을 때 쉽고 효과적으로 해결할 수 있도록 돕는다.

디자인 패턴은 주로 소프트웨어 설계와 구현에서 발생하는 문제를 해결하기 위해 개발되었다.

이러한 문제들은 코드의 유연성, 확장성, 유지보수성 등과 관련되어 있다.

디자인 패턴은 이러한 문제를 해결하기 위한 일련의 테스트된 솔루션을 제공하여 개발자들이 재사용할 수 있도록 한다.

 

2. 구성요소

디자인 패턴은 일반적으로 다음과 같은 구성 요소로 이루어져 있다.

이름(Name)
디자인 패턴은 특정한 문제를 해결하는데 사용되는 재사용 가능한 솔루션을 표현하는 이름을 가지고 있다.

이 이름은 패턴을 식별하고 이해하는 데 도움을 준다.

예를 들어, "싱글톤(Singleton)"이라는 이름은 오직 하나의 객체만을 생성하도록 하는 패턴을 의미한다.

문제(Problem)
디자인 패턴은 해결해야 할 특정한 문제나 상황을 정의한다.

이는 어떤 상황에서 해당 패턴을 적용해야 하는지를 명확히 한다.

예를 들어, 객체 생성 과정을 유연하게 관리해야 할 때에는 생성 패턴을 사용해야 할 것이다.

해결책(Solution)
각 디자인 패턴은 특정한 문제에 대한 해결책을 제공한다.

이 해결책은 패턴의 구성 요소와 그들 사이의 관계, 작동 방식 등을 설명한다.

디자인 패턴은 이러한 해결책을 제시하여 개발자들이 재사용 가능한 솔루션을 활용할 수 있도록 돕는다.

요소(Elements)
디자인 패턴은 일반적으로 다양한 요소로 구성되어 있다.

이러한 요소는 패턴의 구현을 설명하고, 패턴이 적용되는 소프트웨어 구조를 구성하는데 사용된다.

예를 들어, 팩토리 메서드 패턴에는 "Creator", "ConcreteCreator", "Product", "ConcreteProduct" 등의 요소가 있다.

결과(Consequences)
디자인 패턴을 적용할 때 발생하는 결과나 이점을 설명한다.

이는 패턴의 사용으로 인해 얻을 수 있는 장점과 함께 고려해야 할 사항들을 포함한다.

예를 들어, 템플릿 메서드 패턴은 코드 중복을 줄이고 유연성을 높일 수 있지만, 상속 구조에 의한 제약사항을 가질 수 있다.

적용(Aplication)
각 디자인 패턴은 어떤 상황에서 적용할 수 있는지를 명시한다.

이는 패턴이 사용될 수 있는 유용한 예제를 제공하여 개발자들이 해당 패턴을 올바르게 이해하고 적용할 수 있도록 돕는다.

이러한 구성 요소들을 함께 고려하여 디자인 패턴을 이해하고 적용할 수 있다.

 

3.  분류

디자인 패턴은 주로 세 가지 카테고리로 분류된다.

생성(Creational) 패턴

객체의 생성 메커니즘에 관련된 문제를 해결한다.

이러한 패턴은 객체 생성의 유연성을 높이고, 코드의 의존성을 줄이며, 객체 생성 과정을 쉽게 관리할 수 있도록 돕는다.
Builder, Prototype, Factory Method, Abstract Factory, Singleton 패턴 등이 있다. 

추상 팩토리 패턴을 위한 샘플 UML 클래스 및 시퀀스 다이어그램


구조(Structural) 패턴

클래스와 객체를 조합하여 더 큰 구조를 형성하는 방법에 관련된 문제를 해결한다.

이러한 패턴은 클래스와 객체 간의 관계를 정의하고, 이를 통해 더 유연하고 효율적인 구조를 만들어낸다.

Bridge, Decorator, Facade, Flyweigt, Proxy, Composite, Adapter 패턴 등이 있다.

행위(Behavioral) 패턴

객체나 클래스 사이의 알고리즘과 책임 분배에 관련된 문제를 해결한다.

이러한 패턴은 객체들 간의 상호작용을 효율적으로 관리하고, 유연하게 알고리즘을 변경하며, 객체 간의 의사소통을 개선하는 데 도움을 준다.

Mediator, Interpreter, Iterator, Template Method, Observer, State, Visitor, Command, Strategy, Memento, Chain of Responsibility 패턴 등이 있다. 


각 패턴은 특정한 상황에 적합하며, 적절하게 사용될 때 소프트웨어의 품질과 유연성을 향상시킬 수 있다.

또한, 디자인 패턴은 개발자들 사이의 커뮤니케이션을 촉진하고, 소프트웨어 개발의 표준화와 최적화에 기여한다.

 

패턴의 종류와 쓰임이 다양하기에 하나씩 알아보고 포스팅하려 한다. 

 

4. 같이보기

https://ko.wikipedia.org/wiki/%EB%94%94%EC%9E%90%EC%9D%B8_%ED%8C%A8%ED%84%B4

 

디자인 패턴 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 디자인 패턴(Design pattern)은 건축학 및 컴퓨터 과학에서 사용되는 용어로, 설계 문제에 대한 해답을 문서화하기 위해 고안된 형식 방법이다. 이 방식은 건축가

ko.wikipedia.org

https://refactoring.guru/ko/design-patterns

 

디자인 패턴들

 

refactoring.guru

 

반응형

댓글