더북(TheBook)

3.7.7 현실적인 고려 사항

변형 수용

중복된 추상화가 생기는 이유로 동기화와 비동기화 변형의 지원을 들 수 있다. 추상화의 동기화된 버전은 동기화 생성자를 아주 많이 사용하는데, 이것은 중복된 추상화 악취로 고통받는 두 가지 변형에 대응하는 독자적인 추상화 생성으로 이어질 수 있다. 이런 예는 메서드 정의가 유사한 java.util.Vectorjava.util.ArrayList 클래스에서 볼 수 있다. 두 클래스 사이에서 드러나는 주된 차이는 Vector는 스레드에 안전하고, ArrayList는 스레드에 안전하지 않다는 것이다.

 

다양한 맥락에서 타입 이름 중복

더 큰 도메인을 분석하고 모델링하여 통합된 도메인 모델을 생성하기는 어렵다. 실제로 “대규모 시스템을 위한 도메인 모델의 완벽한 통합은 실현 가능하지 않거나 비용이 효율적이지 못할 것이다.”[17] 도메인 주도 설계가 제공하는 한 가지 해법으로 대규모 시스템을 ‘경계가 있는 맥락’으로 나눌 수 있다. 이런 접근 방법은 다양한 맥락에서 결과 모델이 이름 타입을 동일하게 만들 수 있다. 경계가 있는 맥락은 대규모 도메인의 모델링이라는 더 큰 문제를 다루는 데 도움을 주는 패턴 중 하나이므로, 다양한 맥락에서 이름이 동일한 타입은 받아들일 만하다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.