본문 바로가기
IT/Knowledge

디자인패턴 정의와 종류

by 성준하이 2022. 1. 14.
반응형

소프트웨어 개발을 할때 사용되는 디자인 패턴이란 과거에 소프트웨어 개발 과정에서 발견된 설계 노하우를 축적하여 그 방법에 이름이 붙여서 이후에 재사용 하기 좋은 형태로 특정 규약을 만들어서 정리해둔것을 말한다.

 

즉 효율적으로 알고리즘을 만들고 코드를 만들기 위한 방법론이라고 생각하면 될듯하다.

특정 한두개의 패턴을 외우기 보다는 다양하게 이해를 하고 적시적소에 맞게 자신의 코드에 녹여내면 될듯 하다.

 

종류는 대분류로는 생성패턴, 구조패턴, 행위 패턴으로 나뉘고 몇가지만 살펴보면,

 

생성패턴에서는 

가장 유명한 디자인패턴인 싱글톤 패턴이 있다.

클래스의 인스턴스가 하나임을 보장하고 접근할수 있는 전역적인 접근점을 제공한다.

그리고 또다른 유명한 패턴은 추상팩토리 패턴이다.

구체적인 클래스를 지정하지 않고 관련이 있거나 독립적인 객체를 생성하기 위해 인터페이스를 제공하는 패턴이다.

 

구조패턴으로는

적응자 패턴 - 클래스의 인터페이스를 사용자가 기대하는 다른 인터페이스로 변환하는 패턴이다.

호환성이 없는 인터페이스이기에 함께 동작할수 없는 클래스들이 함께 작동하도록 해준다.

브릿지 패턴 - 구현부에 추상층을 분리하여 각자 독립적으로 변형가능한 패턴.

 

행위패턴

옵저버 패턴 - 객체들 사이에 1:N의 의존관계를 정의하여 어떤 객체가 상태가 변활때 의존관계에 있는 모든 객체들이 자동으로 갱신하도록 하는 패턴

 

등이 있다.

너무 많은 패턴들이 있어서 다 다루진 못하였지만 몇가지만 알고 넘어가고 필요시에 적합한 패턴을 찾아서 사용을 하면 되겠다.

 


참고

생성패턴 (Creational)

Pattern NameDescription

Singleton 싱글톤 패턴은 클래스의 인스턴스를 하나만 만들 수 있도록 클래스 초기화를 제한
Factory 팩토리 패턴은 클래스에서 팩토리 클래스로 객체를 인스턴스화하는 책임을 짐
Abstract Factory 팩토리 클래스용 팩토리를 생성
Builder 단계별로 개체를 만들고 마지막으로 개체 인스턴스를 가져오는 방법
Prototype 다른 유사한 인스턴스에서 새 개체 인스턴스를 만든 다음 요구 사항에 따라 수정

 

구조패턴 (Structural)

Pattern NameDescription

Adapter 서로 관련이 없는 두 엔터티 간의 인터페이스를 제공하여 함께 작동할 수 있도록 함
Composite 부분-전체 계층 구조를 구현해야 할 때 사용
Proxy 다른 개체에 대한 액세스를 제어하기 위해 중개자 제공
Flyweight 변경할 수 없는 개체와 함께 사용되는 개체 인스턴스를 캐싱하고 재사용
Facade 클라이언트 응용 프로그램을 돕기 위해 기존 인터페이스 위에 wrapper 인터페이스를 만듬
Bridge 인터페이스를 구현에서 분리하고 클라이언트 프로그램에서 구현 세부 정보를 숨기는 데 사용
Decorater 런타임에 개체의 기능을 수정하는 데 사용

 

행위패턴 (Behavioral)

Pattern NameDescription

Template Method 일부 구현 단계를 하위 클래스로 연기하는 데 사용
Mediator 시스템의 서로 다른 개체 간에 중앙 집중식 통신 매체를 제공하는 데 사용
Chain of Responsibility 클라이언트의 요청이 객체 체인으로 전달되어 처리되는 소프트웨어 설계에서 느슨한 결합을 달성하는 데 사용
Observer 객체의 상태에 관심이 있고 변경 사항이 있을 때마다 알림을 받고 싶을 때 사용
Strategy 전략 패턴은 특정 작업에 대해 여러 알고리즘이 있고 클라이언트가 런타임에 사용할 실제 구현을 결정
Command 명령 패턴은 요청-응답 모델에서 결합 손실을 구현하는 데 사용
State 상태 디자인 패턴은 객체가 내부 상태에 따라 동작을 변경할 때 사용
Visitor 방문자 패턴은 유사한 종류의 개체 그룹에 대해 작업을 수행해야 할 때 사용
Interpreter 언어에 대한 문법적 표현을 정의하고 이 문법을 처리하는 인터프리터를 제공
Iterator 개체 그룹을 통과하는 표준 방법을 제공하는 데 사용
Memento 메멘토 디자인 패턴은 나중에 복원할 수 있도록 객체의 상태를 저장하고 싶을 때 사용

 

반응형

'IT > Knowledge' 카테고리의 다른 글

온프레미스 / 오프프레미스란?  (18) 2022.01.18
ORM ( Object-Relational Mapping) 설명 및 소개  (10) 2022.01.15
What is the kubernetes?  (9) 2022.01.13
Docker란?  (11) 2022.01.12
Multi-Tenancy 란?  (15) 2022.01.10

댓글