프로그램을 설계 할 때 발생했던 문제점을 객체 간의 상호 관게 등을 이용하여 해결할 수 있도록 하나의 규약 형태로 만들어 놓은 것을 의미
소프트웨어의 스프트웨어 디자인에서 특정 문맥에서 공통적으로 발생하는 문제에 대해 재사용 가능한 해결책이다.
소스나 기계 코드로 바로 전환될수 있는 완성된 디자인은 아니며, 다른 상황에 맞게 사용될 수 있는 문제들을 해결하는데에 쓰이는 서술이나 템플릿이다. 디자인 패턴은 프로그래머가 어클리케이션이나 시스템을 디자인할 때 공통된 문제들을 해결하는데에 쓰이는 형식화 된 가장 좋은 관행이다.
디자인 패턴을 활용하면 단지 코드만 재사용하는 것이 아니라, 더 큰 그림을 그리기 위한 디자인도 재사용할 수 있다.
디자인 패턴은 프로그램을 개발하는 과정에서 빈번하게 발생하는 디자인 문제를 정리해서 상황에 따라 간편하게 적용할 수 있게 정리한 것
잘 활용 할 수 있다면 적지 않은 시간과 노력, 시행착오를 줄일 수 있다.
객체 지향 프로그래밍 설계를 할 때 자주 발생하는 문제들을 피하기 위해 사용되는 패턴
일반 프로그래머가 만나는 문제가 지구상에 유일한 문제일 확률은 거의 없다. 이미 수 많은 사람들이 부딪힌 문제다. 따라서 전문가들이 기존에 해결책을 다 마련해 놓았다.
논문 "Using Pattern Languages for Object-Oriented Programs" (1987)을 통해 제안되었다. 이후 큰 유명세를 타게 된 것은 23개의 패턴을 수록한 'GoF' (1995)이다. 현재에는 수천여개의 패턴이 발표되어 있다.
《디자인 패턴》(Design Patterns, ISBN 0-201-63361-2)은 소프트웨어 설계에 있어 공통된 문제들에 대한 표준적인 해법과 작명법을 제안한 책이다. 이 분야의 사인방(Gang of Four, 줄여 GoF)으로 불리는 에리히 감마(Erich Gamma), 리처드 헬름(Richard Helm), 랄프 존슨(Ralph Johnson), 존 블리시데스(John Vlissides)가 같이 썼고, 한국어 판은 김정아의 번역으로 피어슨 에듀케이션 코리아를 통해 출판되었다.
책의 첫 번째 반절은 다양한 디자인 패턴의 정의에 할애하고 있고, 나머지 반절은 실제적으로 유용한 디자인 패턴들을 나열하고 있다. 책의 예제들은 객체지향적인 언어인 C++과 스몰토크로 제시되고 있다. 다음은 책에서 언급되고 있는 패턴의 리스트이다.