Computer Science/CS 스터디

디자인 패턴이란? (Design Pattern)

sujii 2023. 3. 15. 17:43
반응형

디자인 패턴이란?

디자인 패턴은 건축학 및 컴퓨터 과학에서 사용되는 용어로, 설계 문제에 대한 해답을 문서화하기 위해 고안된 형식 방법이다.

컴퓨터 과학에서의 디자인 패턴이란

"프로그램 개발에서 자주 나타나는 과제를 해결하기 위한 방법 중 하나"

과거의 소프트웨어 개발 과정에서 발견된 설계의 노하우를 축적하여 이름을 붙여, 이후에 재사용하기 좋은 형태로 특정의 규약을 묶어서 정리한 것이다. 즉, 개발자들끼리 협업을 잘 할 수 있도록 코드들의 패턴을 정해 코드의 질, 효율성을 높히는 것을 뜻한다.

 => 효율적인 코드를 만들기 위한 방법론

 

디자인 패턴의 장단점

장점

  • 개발자 간의 원활한 의사소통
  • 소프트웨어 구조 파악 용이
  • 재사용을 통한 개발 시간 단축
  • 설계 변경 요청에 대한 유연한 대처
  • 불필요한 리소스 낭비 방지

단점

  • 객체 지향 설계 / 구현 위주로 사용됨
  • 초기 투자 비용 부담

 

 

디자인 패턴의 종류

GoF(Gang of Four) 디자인 패턴 : 디자인 패턴을 용도에 따라 나누면, 생성, 행동, 구조라는 3가지 범주로 패턴을 나눌 수 있다.

 

1. Creation Pattern (생성 패턴)

객체 인스턴스를 생성하는 패턴으로, 클라이언트와 그 클라이언트가 생성해야 하는 객체 인스턴스 사이의 연결을 끊어주는 패턴

  • 추상 팩토리 메서드 (Abstract Factory Methods) : 관련된 부품을 조립해서 제품을 만든다.
  • 팩토리 메서드 (Factory Methods) : 인스턴스 작성을 하위 클래스에게 맡긴다.
  • 빌더 (Builder) : 잡한 인스턴스를 조립한다.
  • 프로토타입 (Prototype) : 복사해서 인스턴스를 만든다.
  • 싱글톤 (Singleton) : 단 하나의 인스턴스.


2. Structural Pattern (구조 패턴)
클래스와 객체를 더 큰 구조로 만들 수 있게 구성을 사용하는 패턴

  • 어댑터 (Adapter) : 한 꺼풀 덧씌워 재사용.
  • 브리지 (Bridge) : 기능의 계층과 구현의 계층을 분리한다.
  • 컴퍼지트 (Composite) : 그릇과 내용물의 동일시.
  • 데코레이터 (Decorator) : 장식과 내용물의 동일시.
  • 퍼사드 (Facade) : 간단한 창구.
  • 플라이웨이트 (Flyweight) : 동일한 것을 공유해서 낭비를 없앤다.
  • 프록시 (Proxy) : 필요해지면 만든다.


3. Behavioral Pattern (행동 패턴)
클래스와 객체들이 상호작용하는 방법과 역할을 분담하는 방법을 다루는 패턴

  • 책임 연쇄 (Chain of Responsibility) : 책임 떠넘기기.
  • 커맨드 (Command) : 명령을 클래스로 만든다.
  • 인터프리터 (Interpreter) : 문법 규칙을 클래스로 표현한다.
  • 이터레이터 (Iterator) : 하나씩 세다.
  • 미디에이터 (Mediator) : 상대는 카운셀러 한사람뿐.
  • 메멘토 (Memento) : 상태를 보존한다.
  • 옵저버 (Observer) : 상태의 변화를 통지한다.
  • 스테이트 (State) : 상태를 클래스로서 표현한다.
  • 스트레티지 (Strategy) : 알고리즘을 모두 교체한다.
  • 템플릿 메서드 (Template Meothods) : 체적인 처리를 하위 클래스에게 맡긴다.
  • 비지터 (Visitor) : 구조 안을 돌아다니면서 일을 한다.

 

 

참고 사이트

https://www.devkuma.com/docs/design-pattern/intro-basic/