<aside>
💡
디자인 패턴: 소프트웨어 설계에서 반복적으로 발생하는 문제에 대해 반복적으로 적용할 수 있는 해결 방법
</aside>
1. 디자인 패턴과 설계 재사용
1. 소프트웨어 패턴
- 패턴: 한 컨텍스트에서 유용한 동시에 다른 컨텍스트에서도 유용한 ‘아이디어’
- 경험을 통해 축적된 실무 지식을 효과적으로 요약하고 전달
- 가장 중요한 요소는 패턴의 ‘이름’
- 패턴의 범위는 개발과 직접적으로 연관되는 분석, 설계, 구현 영역에 국한되지 않음
- 프로젝트 조직 구성 방법, 프로젝트 일정 추정 방법, 요구사항 관리 방법 등
- 반복적인 규칙을 발견할 수 있는 모든 영역이 패턴의 대상
- 패턴은 홀로 존재하지 않음
- 패턴 내에 포함된 컴포넌트와 컴포넌트 간의 관계는 더 작은 패턴에 의해 서술
- 패턴들을 포함하는 더 큰 패턴 내에 통합
2. 패턴 분류
1. 아키텍처 패턴
- 소프트웨어의 전체적인 구조를 결정하기 위해 사용
- 미리 정의된 서브시스템들을 제공, 각 서브시스템들의 책임을 정의, 서브시스템들 사이의 관계를 조직화하는 규칙과 가이드라인을 포함
- 구체적인 소프트웨어 아키텍처를 위한 템플릿을 제공
- 언어나 패러다임에 독립적
2. 디자인 패턴
- 특정 정황 내에서 일반적인 설계 문제를 해결
- 협력하는 컴포넌트들 간 반복적으로 발생하는 구조 서술
- 특정한 설계 문제를 해결하는 것을 목적
- 언어나 패러다임에 독립적
3. 이디엄