Design Pattern 은 원래 Computer Science 에서 등장한 말이 아니다. 사실 Design Pattern 은 건축학자인 Christopher Alexander 의 다년간의 실험에 의한 결과로 등장한 이론이다. Alexander 는 그의 도시-건축-시공 에 대한, 도시의 발전과 개발계획에 대한 컨설팅 및 실험의 결과에서 도시의 발전은 그 형태의 필요에 따라 분류할 수 있는 형태가 존재한다는 것을 알았으며 이것을 표현하는 방법을 Pattern Language 라고 부르기 시작했다.
Erich Gamma 를 포함한 4명의 연구자들은 이 부분에 흥미를 느끼기 시작헀다. 사실 Alexander 의 실험은 결국 실패로 끝나고 학문적 성과로만 남는 결과가 되었지만, Design Pattern 은 전혀 생각지도 못한 분야에서 주목받게 되었다. 바로 Computer Science 라는 분야가 그것이다.
Xerox 의 Palo Alto 연구소에서 시작된 Object-Orientation Programming(객체지향 프로그래밍)과 Smalltalk 의 세계는 Personal Computer 의 물리적 성능의 한계때문에 이미 만들어졌음에도 불구하고 한동안 빛을 보지 못했다. Smalltalk 는 Star/Alto 머신 외의 일반 PC 에서 사용되기에는 너무 무거웠으며 C++ 는 C 언어에 비해서 Compile 속도가 너무 느렸다. 그러나 무어의 법칙대로 PC 의 성능은 비약적으로 발전했으며 소프트웨어 개발의 패러다임또한 변하기 시작헀다.
개발의 목표에 대해 기존에는 결과물의 성능이 최우선이었지만, 보다 개발의 편리성과 효율성이 중요해지기 시작했다. 기존의 Library 로 대표되던 Framework 은 재사용성과 프로그램 작업의 표율성을 위한 방향으로 만들어지기 시작했다. 기존의 Procedural(절차적) 프로그래밍 언어로는 한계가 오게 된것이다. 성능을 위해서만 발전한 언어의 Specification(명세) 만으로는 이러한 요구를 감당하기에는 역부족이었다. 이제 객체지향 프로그래밍 언어의 시대가 필요해지기 시작헀다.
객체지행 프로그래밍이 본격적으로 요구되게된 배경에는 프로그래밍 작업에 대하니 효율이 가장 컸다. Design Pattern(GoF) 이 사람들에게 다시 관심받게 된것은 어찌보면 당연한 순서일수도 있다. Design Pattern 의 목적 자체가 발견된 Pattern 을 통한 소프트웨어 개발에 도움이 되는 재사용성/업무의효율 에 있기 때문에 객체지향을 도입하는 목표와 Design Pattern 의 도입은 정확하게 일치한다고 봐아한다.