1. 디자인 패턴이란? |
- 소프트웨어 디자인 과정에서 개발자들이 직면하는 문제들 대한 일반화된 해결책
- 재사용하는 코드 조각이 아니라 특정 문제를 해결하는 방식을 알려주는 "개념"
- 많은 경우 상속과 다형성 개념을 이용해서 해결하는 듯
2. 왜 디자인패턴을 배워야 하는가? |
- 디자인 패턴에 대해 공부하지 않아도 프로그래머로 일하는데 문제가 없는 경우가 많다
- 심지어 본인도 모르는 사이 이미 디자인 패턴을 적용해서 코드를 구현하고 있을 수도 있다
- 더 나아가 초보자에게, 혹은 추상화가 부족한 특정 언어들에게는 오히려 방해가 될 수 있다
- 그럼에도 디자인 패턴을 알면 뭐가 좋은가?
1) 소프트웨어 디자인의 일반적인 문제들에 대해 "시도되고 검증된" 해결책이다.
2) 팀원간의 의사소통을 더 효율적으로 할 수 있게 해주는 "공통언어"가 정의된다.
- 만약 A상황에서는 B패턴을 사용하세요 라고 간단하게 말할 수 있게 됨
3. 패턴의 분류 |
- 디자인 패턴은 복잡성, 상세도 및 적용 범위에 따라 분류됨
1) 상위와 하위 설계 패턴으로 구분하는 '아키텍처 패턴'과 '이디엄 패턴'
2) 패턴의 의도와 목적에 따라 분류하는 '생성 패턴', '구조 패턴', '행동 패턴'
- 기본적인 하위설계 패턴인 이디엄, 상위설계 패턴인 아키텍처 패턴으로 나뉘기도 함
- 하위 설계패턴인 이디엄은 단일 프로그래밍 언어에만 적용 가능
- 상위 설계 패턴인 아키텍처 패턴은 거의 모든 언어로 구현할 수 있고 다른 패턴들과 달리 애플리케이션 전체구조(아키텍처)를 설계하는데 사용
- 생성 패턴들은 기존 코드의 재활용과 유연성을 증가시키는 객체 생성 메커니즘을 제공
- 구조 패턴은 구조를 유연하고 효율적으로 유지하면서 객체와 클래스를 더 큰 구조로 조합하는 방법을 설명
- 행동 패턴은 객체간의 효과적인 의사소통과 책임할당을 처리
보통 생성/구조/행동 패턴 3가지로 분류해서 사용하는 듯 함
4. 패턴의 종류 |
GoF 방식으로 분류한다면 생성패턴/구조패턴/행동패턴 3가지로 구분할 수 있다.
1) 생성 패턴(Creational Patterns)
2) 구조 패턴(Structural Patterns)
3) 행동 패턴(Behavioral Patterns)