
소프트웨어를 설계할 때 발생했던 문제점들을 객체 간의 상호 관계 등을 이용하여 해결할 수 있도록 하나의 "규약" 형태로 만들어 놓은 것
재사용 가능한 해결책
특정 문제의 검증된 해결책을 제공하므로, 새로운 코드를 작성할 때 재사용하여 개발시간 단축
매번 새롭게 설계하기보다는 이미 선대가 고민해놓은 디자인 패턴을 활용하여 안정적이고 최적화하기 좋은 해결책으로 사용 가능
유연성
시스템의 변경이나 확장에 유연하게 대처할 수 있도록 설계
유지보수성
코드의 구조를 명확하게 하고, 모듈성을 높여 유지보수 용이
의사소통
개발자들 간의 공통된 용어를 제공하여 의사소통 원활
1987년에 작성된 "Using Pattern Languages for Object-Oriented Programs"를 통해 제안
이후 1995년에 이른바 사인방(Gang of Four)이 쓴 23개의 디자인 패턴을 수록한 "Design Patterns: Elements Of Reusable Object-Oritented Sotfware)라는 책이 출판되고 나면서 유명해짐.
현재에는 수천여 개의 패턴이 발표되어 있지만, 주로 GoF가 제시한 방법으로 크게 3가지 분류
생성(Creational) 패턴
구조(Structural) 패턴
행위(Behavioral) 패턴
디자인 패턴과 알고리즘은 모두 소프트웨어 개발에서 중요한 역할, But