일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 검색 기능 확장
- 프로그래머스
- 해시
- @Getter
- @EnableScheduling
- 완주하지 못한 선수
- 알고리즘
- 정렬
- 가장 큰 수
- 기능개발
- kubenetes
- 스프링 스케쥴러
- @Data
- 모던 자바 인 액션
- 쿠버네티스
- K번째수
- 다리를 지나는 트럭
- H-index
- 롬복 어노테이션
- 영속 자료구조
- @Setter
- 커링
- 고차원 함수
- 전화번호 목록
- 크론 표현식
- 코딩 테스트
- @configuration
- 스택/큐
- Java
- 루씬 인 액션
- Today
- Total
목록도메인 주도 설계 (25)
Today I Learned
유용한 모델을 개발하기 위해 명심할 점 정교한 도메인 모델은 만들 수 있으며, 노력을 들일 만한 가치가 있다. 해당 도메인을 학습하는 개발자와 도메인 전문가의 긴밀한 참여와 반복적인 리팩터링 과정 없이 유용한 모델을 개발하기란 쉽지 않다. 유용한 모델을 효과적으로 구현하고 사용하려면 정교한 설계 기술이 필요할지도 모른다. 리팩터링 수준 대부분 리팩터링을 다룰 때 코드의 가독성을 높이거나 쉽게 개선하는 기계적인 변경에 초점을 맞춘다. 하지만 시스템의 생존력에 가장 큰 영향을 미치는 리팩터링은 도메인에 대한 새로운 통찰력을 반영하거나 코드를 사용해 모델이 표현하고자 하는 바를 명확하게 드러내고자 수행하는 경우이다. 리팩터링의 목표는 개발자가 단순히 코드가 수행하는 바를 이해하는 것 뿐만 아니라 왜 그렇게 수..
시나리오 연습 예제 애플리케이션 기능 : 화물의 목적지 변경 Customer로부터 화물의 목적지에 대한 변경 요청이 올 수 있다. Delivery Specification은 VALUE OBJECT이므로 기존 것을 버리고 새로운 Delivery Specification을 획득해 대체하면 간단하게 처리할 수 있다. 예제 애플리케이션 기능 : 반복 업무 같은 고객이 반복적으로 예약하는 내용이 비슷해서 기존 Cargo를 새로운 Cargo의 프로토타입으로 사용하고 싶다. Cargo는 ENTITY이며 AGGREGATE의 루트이므로 신중하게 복사해야 한다. AGGREGATE의 외부에는 영향을 주지 않아야 한다. Delivery History : 기존 이력은 사용하지 않으므로 빈 상태로 새로 만든다. Customer ..
예제를 통해 MODEL-DRIVEN DESIGN의 적용 효과와 어떻게 요구사항과 구현쟁점을 해결하는지 살펴보자. 화물 해운 시스템 소개 초기 요구사항 고객 화물의 주요 처리상황 추적 화물 사전 예약 화물이 일정한 처리 지점에 도달할 때 자동으로 고객에게 송장을 발송 해운 도메인 모델을 나타내는 클래스 다이어그램 모델 내의 각 객체는 다음과 같은 의미를 지닌다. Handling Event(처리이벤트) - Cargo에 불연속적으로 발생하는 활동(화물을 배에 적재, 세관을 통과 등등) Delivery Specification(배송 명세) - 목적지와 도착 날짜를 포함한 배송 목표를 정의 Delivery Specification이 없다면 Cargo 객체에서 배송 목표를 명시하기 위한 모든 속성과 연관관계의 세부..
REPOSITORY (리파지터리) 객체를 이용하기 위해서는 객체에 대한 참조가 필요하다. 객체의 참조를 얻는 방법은 객체를 생성 이미 알고있는 객체로부터 연관관계를 탐색 데이터베이스에서 질의를 통해 획득 이 중 3번의 방식은 질의 결과를 손쉽게 객체로 변환할 수 있어 도움이 되지만 남용할 경우 문제가 있다. 도메인이 아닌 기술적 메커니즘에 관해 더 생각하게 된다. AGGREGATE나 캡슐화 같은 특징을 활용하는 것을 우회하려 하고, 데이터를 직접 획득해서 조작하게 된다. 도메인 로직이 질의와 클라이언트 코드로 들어가고, ENTITY와 VALUE OBJECT는 데이터 컨테이너로 전락한다. 도메인 계층에 대한 개발자들의 이해 수준을 낮춰 모델과 도메인 계층을 동떨어진 것으로 만든다. REPOSITORY를 사..