디자인 패턴

디자인 패턴

프로그램 개발에서 자주 발생하는 문제를 해결하기 위한 방법 중 하나로, 과거의 소프트웨어 개발 과정에서 발견된 설계의 노하우를 축적하여 이름을 붙여, 이후에 재사용하기 좋은 형태로 특정의 규약을 묶어서 정리한 해결책1

  • “바퀴를 다시 발명하지 마라(Don’t reinvent the wheel)”
  • = 이미 만들어져 잘 되는 것을 처음부터 다시 만들 필요가 없다는 뜻

패턴이란?

프로그램 개발에서 설계 문제와 이를 처리하는 해결책에도 공통점이 있는 데 이런 유사점을 패턴이라 한다.

디자인 패턴 종류

GoF(Gang of Fout)2가 23가지의 디자인 패턴을 정리하고 각각의 디자인 패턴을 생성(Creational), 구조(Structural), 행위(Behavioral) 3가지로 분류했다.

생성(Creational) 패턴

  • 추상 팩토리(Abstract Factory)
  • 빌더(Builder)
  • 팩토리 메서드(Factory Methods)
  • 프로토타입(Prototype)
  • 싱글턴(Singleton)

구조(Structural) 패턴

  • 어댑터(Adapter)
  • 브리지(Bridge)
  • 컴퍼지트(Composite)
  • 데커레이터(Decorator)
  • 퍼사드(Facade)
  • 플라이웨이트(Flyweight)
  • 프록시(Proxy)

행위(Behavioral) 패턴

  • 책임 연쇄(Chain of Responsibility)
  • 커맨드(Command)
  • 인터프리트(Interpreter)
  • 이터레이터(Iterator)
  • 미디에이터(Mediator)
  • 메멘토(Memento)
  • 옵저버(Observer)
  • 스테이트(State)
  • 스트래티지(Strategy)
  • 템플릿 메서드(Template Method)
  • 비지터(Visitor)

1: 디자인 패턴 정의 - 위키백과
2: 에리히 감마(Erich Gamma), 리차드 헬름(Richard Helm), 랄프 존슨(Ralph Johnsom), 존 블리시디스(John Vissides)를 말한다. 소프트웨어 개발 영역에서 디자인 패턴을 구체화하고 체계화한 사람들이다.