디자인 패턴
- 소프트웨어 디자인 과정에서 자주 발생하는 문제들에 대한 해결책
- 여러 설계 사례를 분석해 유형 별로 가장 적합한 설계를 일반화해 패턴으로 정립한 것
- 특정 유형의 문제를 해결하는 방식을 알려주는 일반적인 개념
- 문제 해결 방법의 청사진
필요성
- 소프트웨어 개발의 경험의 중요성
- 설계 관련 지식과 노하우 공유 방법
- 일반화 된것이어서 구체적인 문제에 적용하려면 또 다른 지식이나 노하우 필요
- 소프트웨어의 목적에 따라 다른 설계를 가진다
- GoF (Gang of Four)
- 객체지향 개념에 따른 설계 중 재사용 할 경우에 유용한 것을 정립한 것
- 설계 과정의 속도를 높인다: 이미 검증되고 테스트된 구조이기 때문
- Reusable, flexible: 재사용성을 높이고 변경을 쉽게 하도록 하는 구조
- 의사 소통의 효율성: 복잡한 구조를 정립된 용어를 통해 쉽게 설명 가능
객체지향개발 특성
추상화
- 클래스들의 공통적인 특성(변수, 메소드)들을 묶어 표현

- 핸드폰 클래스에 공통적인 특징인 것들을 묶어 클래스로 표현