디자인 패턴이란 프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호 관계 등을 이용하여 해결할 수 있도록 하나의 규약 형태로 만들어 놓은 것
라이브러리나 프레임워크의 기초적인 원리가 됨
프로그램을 설계하고 만들 때 반복해서 발생하는 문제를 해결하는 핵심을 정리해 놓아 동일한 문제 발생 시 해당 디자인 패턴을 적용해 빠르게 해결 가능
개발자 간 커뮤니케이션이 수월해 짐
설계 과정의 속도를 높일 수 있음
다음 3가지를 필수적인 요소로 구성된다
문제가 발생하는 여러 상황을 설명
즉 패턴이 적용될 수 있는 상황을 나타냄
경우에 따라서는 패턴이 유용하지 못한 상황을 나타내기도 함
디자인 패턴이 적용되어 해결될 필요가 있는 여러 디자인 이슈들을 설명
이때 여러 제약 사항과 영향력도 문제 해결을 위해 고려해야 함
문제를 해결하도록 설계를 구성하는 요소들과 그 요소들 사이의 관계, 책임, 협력 관계를 설명
해결은 반드시 구체적인 구현 방법이나 언어에 의존적이지는 않으며, 다양한 상황에 적용할 수 있는 일종의 템플릿 이라고 볼 수 있음
객체 생성 방법이 들어간 디자인 패턴
객체, 클래스 등으로 큰 구조를 만들 때 유연하고 효율적으로 만드는 방법이 들어간 디자인 패턴
객체나 클래스 간의 알고리즘 책임 할당에 관한 디자인 패턴