1장. 도메인 모델 시작 도메인 모델 특정 도메인을 개념적으로 표현한 것이다. 도메인 모델은 객체 모델 / 상태 다이어그램 등으로 표현할 수 있다. 도메인 모델 패턴 도메인 모델은 엔터티와 밸튜 타입으로 구성된다. 엔터티는 고유한 식별자를 갖고 있는 개념을의미하고, 밸류타입은 엔터티에 속해있으면서, 개념적으로 완전한 하나를 표현할 때 사용한다. 예를 들어, "주문"이라는 도메인은 고유한 주문 번호를 갖고 이는 엔터티라고 볼 수 있다. 그리고 주문 안에는 배송지 정보, 수신인 등을 의미하는 속성이 저장되는데, 이를 밸류 타입으로 볼 수 있다. 주의할 점 도메인 모델에서는 get/set 메서드를 사용하지 않는 것이 좋다. set 메서드를 사용하면, 도메인 객체를 생성할 때 완전한 상태가 아닐 수도 있다는 단점이 있다. 즉, 도메인 객체를 생성한 후, set 메서드를 호출해주는걸 빠트리는 실수를 할 수 있으니, 생성자에서 값을 모두 초기화해주는 것이 좋다. 2장. 아키텍처 개요 서비스 레이어는 로직을 직접 수행하기보다는, 도메인 모델에 로직 처리를 위임한다. 서비스 레이어에서 인프라 스트럭처 ( Data Access Layer ) 계층에 의존하는 경우도 있다. ( 도메인 연동 없이, 외부 시스템과 바로 연동하는 경우 ) 그런 경우, 서비스 로직에서 인프라스트럭쳐에 해당하는 로직을 바로 호출하면, 서비스와 인프라 스트럭쳐 간의 의존성이 심해진다. 이 경우, 의존성 주입 (DI) 개념이 반영되어야한다. 위의 이미지를 기반으로 설명하자면, CalculateDiscountService에서는 RuleDiscounter라는 인터페이스를 매개변수나 멤버변수로 저장/관리한다. 그리고 인터페이스를 클래스로 구현한 객체 (DroolRuleDiscounter)를 CalculateDiscountService를 실행할 때 매개변수 / 멤버변수로 전달하고, 저장한다. 이렇게 하면, 인프라 스트럭처 클래스를 변경해야할 때, 이를 사용하는 서비스를 모두 고쳐줘야하는 고생을 안해도 된다. 인터페이스를 구현한 객체에서 변경된 클래스 / 함수만 적용해주면 된다. 도메인 영역 구성요소 엔티티, 밸류, 애그리거트, 리포지터리, 도메인 서비스로 구성된다. 애그리거트는 관련된 엔티티와 밸류 객체를 개념적으로 하나로 묶은거다. 리포지토리는 도메인 모델을 로딩 / 저장하는 기능을한다. 도메인 서비스는 특정 엔티티에 속하지 않는 도메인 로직을 처리한다. |
'관심사 > 독후감' 카테고리의 다른 글
마지막 패리시부인 - 리브 콘스탄틴 (1) | 2018.03.19 |
---|---|
최범균 <DDD START! > 3장 요약 (0) | 2018.02.23 |
강대명 <대용량 서버 구축을 위한 Memcached와 Redis> (0) | 2018.02.03 |
배리오쉬리 <당신이 회사에서 보지 못하는 90%의 진실> 요약 (1) | 2018.01.03 |
권문수 <실무로 배우는 시스템 성능 최적화> - 강추! (0) | 2018.01.03 |