각 도메인의 사례가 되는 설계집
숙련된 개발자들은 도메인 문제를 관찰하던 도중 익숙한 종류의 책임이나 관계를 발견하면 과거에 문제를 해결했던 "경험"을 활용하려고 한다. ... 이 가운데 일부는 패턴 형식으로 기록되고 공유되어 이전에 축적된 경험을 다른 사람들이 쉽게 활용할 수 있는 길을 열어 주기도 한다.
2부에서 소개한 기본 요소와 관련된 패턴이나 10장의 유연한 설계 원칙과는 대조적으로 특정 개념을 표현하는 객체를 사용해서 더 높은 수준에서 더욱 특화된 영역을 다룬다.
마틴 파울러는 『분석 패턴: 재사용 가능한 객체 모델(Analysis Patterns: Reusable Object Models)』에서 분석 패턴을 다음과 같이 정의한다.
마틴 파울러가 제시한 분석 패턴은 실무에서 쌓은 경험을 바탕으로 도출된 것이므로 올바른 상황에서 적절할 경우 매우 실용적이다. 분석 패턴은 기술적인 해법이 아니다. 분석 패턴은 특정 도메인의 모델을 작성할 때 따를 수 있는 유용한 지침서에 해당한다.
최상의 분석 패턴은과거의 프로젝트에서 유용한 경험을 전달하고 모델에 대한 통찰력을 광범위한 설계 방침과 구현 결과에 결합한다.
분석 패턴이 현재의 요구사항에 딱 들어맞는 경우는 거의 없다. 그럼에도 분석 패턴은 도메인을 파악하는 과정에서 훌륭한 길잡이 역할을 하며 깔끔하게 추상화된 어휘집을 제공한다.
다만 한 가지 변경하지 말아야 할 것이 있다. 널리 알려진 분석 패턴을 적용할 때는 패턴의 외견상의 형태는 변경해도 무방하지만 패턴이 의미하는 기본적인 개념만큼은 손대지 말아야 한다. 여기에는 두 가지 이유가 있다.
유기적으로 구성된 지식을 다시 적용하는 이런 종류의 재사용 != 프레임워크나 컴포넌트와 같은 코드의 재사용 분석 패턴은 모델의 일부를 구성하는 부속품에 불과하다.
분석 패턴은 가장 중요하고 어려운 결정 사항에 집중하고 어떤 것을 선택해야 하는지와 그 외의 대안으로는 어떤 것이 있는지 명확하게 제시한다.
또한 분석 패턴은 그것이 없다면 알아내는 데 큰 비용이 드는 하부 활동에 대한 영향력을 예측할 수 있게 만들어준다.