디자인 패턴
패턴은 반복적으로 발생하는 문제와 해법으로 정의된다. 따라서 패턴은 지식 전달과 커뮤네키이션 수단으로 활용할 수 있다. 패턴의 범위는 소프트웨어의 분석, 설계, 구현의 영역만으로 한정된 것이 아니라 프로젝트 조직을 구성하는 방법, 프로젝트 일정을 추정하는 방법, 요구사항을 관리하는 방법과 같이 반복적인 규칙을 발견할 수 있는 모든 영역이다. 패턴의 범위나 적용 단계에 따라 아키텍처 패턴, 분석 패턴, 디자인 패턴, 이디엄 4가지로 분류된다. 이 중 가장 널리 알려진 디자인 패턴은 특정한 설계 문제를 해결하는 것을 목적으로 한다. 객체지향 설계에서 가장 중요한 일은 올바른 책임을 올바른 객체에게 할당하고 객체 간의 유연한 협력을 구축하는 것이다. 책임과 협력은 캡슐화, 크기, 의존성, 유연성, 성능, 확장..