디자인 패턴은 소프트웨어 디자인 과정에서 자주 발생하는 문제들에 대한 전형적인 solution이다. 이는 재사용할 수 있는 코드 조각같은 것들이 아니고, 특정 문제를 해결하는 방식을 알려주는 일반적인 개념이다. 패턴은 알고리즘과 혼동되곤 하는데, 둘 다 어떤 문제를 해결하기 위해 따라야 할 일련의 절차를 정의하지만, 패턴은 알고리즘보다 더 상위 수준의 설명을 의미한다. 즉, 알고리즘을 요리에 대한 레시피에 비유한다면, 패턴은 다이닝 코스 구성으로 비유할 수 있다. 디자인 패턴은 Creational Pattern(생성 패턴), Structural Pattern(구조 패턴), Behavioral Pattern(행동 패턴) 3가지로 구분 되며 종류는 다음과 같다.Creational PatternStructur..