소프트 디자인 패턴은 소프트웨어를 설계할 때 특정 맥락에서 공통적으로 발생하는 문제에 대한 재사용이 가능한 해결책이다. 디자인 패턴은 프로그램 소스 코드 또는 기계어 코드로 바로 변환할 수 있는 최종적인 설계는 아니고 다른 상황에 따라 문제를 해결하는 방법의 서술 또는 템플릿아다. 디자인 패턴은 프로그래머가 에플리케이션이나 시스템을 디자인할 때 공통된 문제를 해결하는데 유용하게 고려될 수 있다.
디자인 패턴 영역의 고전인 GoF의 디자인 패턴에서는 객체지향적 디자인 패턴을 생성 패턴(Creational Pattern), 구조 패턴(Structural Pattern), 행동 패턴(Behavoral Pattern)으로 구분하였다. 고전적인 디자인 패턴의 분류는 다음과 같다.
-
생성 디자인 패턴
- 싱글턴(Singleton pattern)
- 빌더 패턴(Builder pattern)
- 프로토타입 패턴(Prototype pattern)
- 팩트로 패턴(Factory pattern)
- 단순 팩토리 패턴(Simple Factory pattern)
- 팩토리 메서드 패턴(Factory Method Pattern)
- 추상 팩토리 패턴(Abstract Factory pattern)
-
구조 디자인 패턴
- 어댑터 패턴(Adapter pattern)
- 브릿지 패턴(Bridge pattern)
- 컴포지트 패턴(Composite pattern)
- 데커레이터 패턴(Decorator pattern)
- 퍼사드 패턴(Facade pattern)
- 플라이웨이트 패턴(Flyweight pattern)
- 프록시 패턴(Proxy pattern)
-
행동 패턴
- 커맨드 패턴(Command pattern)
- 인터프리터 패턴(Interprete pattern)
- 반복자 패턴(Iterator pattern)
- 중재자 패턴(Mediator pattern)
- 메멘토 패턴(Memento pattern)
- 옵서버 패턴(Observer pattern)
- 템플릿 메소트 패턴(Template Method pattern)
- 전략 패턴(Strategy pattern)
- 상태 패턴(State pattern)
- 비지터 패턴(Visotor pattern)