반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 | 31 |
Tags
- @EnableScheduling
- @Setter
- 알고리즘
- H-index
- 스택/큐
- @Getter
- kubenetes
- 쿠버네티스
- 기능개발
- 검색 기능 확장
- 스프링 스케쥴러
- 다리를 지나는 트럭
- 고차원 함수
- 전화번호 목록
- 완주하지 못한 선수
- K번째수
- 모던 자바 인 액션
- 해시
- Java
- 정렬
- 크론 표현식
- @Data
- 가장 큰 수
- @configuration
- 코딩 테스트
- 영속 자료구조
- 롬복 어노테이션
- 루씬 인 액션
- 프로그래머스
- 커링
Archives
- Today
- Total
Today I Learned
[도메인 주도 설계] 12. 모델과 디자인 패턴의 연결 본문
728x90
STRATEGY (전략)
- 여러 프로세스 중 하나를 선택하는 로직 + 여러 프로세스 그 자체로 인해 모델링이 복잡해짐
- 프로세스에서 변화하는 부분을 별도의 전략 객체로 분리해서 모델에 표현
- 프로세스의 규칙와 프로세스를 제어하는 행위를 분리
- STRATEGY 디자인 패턴에 따라 규칙이나 대체 가능한 프로세스를 구현
- 예제 - 항로 탐색 정책
- Routing Service에서 가장 빠른 항로나 가장 저렴한 항로 중 하나를 선택하는 조건 로직이 나타난다.
- 이를 STRATEGY로 분리하면 항로 선택 방법을 명확하게 표현할 수 있다.
- STRATEGY는 선택 가능한 Leg Magnitude Policy의 종류를 명확하게 표현하며, 조건식을 사용하지 않고도 동일한 방법으로 모든 요청을 처리할 수 있다.
COMPOSITE (복합체)
- 중첩된 복합 객체 간의 관련성을 모델에 반영하지 않을 경우 공통적인 행위가 중복되며, 유연성이 떨어짐
- COMPOSITE 내부에 포함된 모든 구성요소를 포괄하는 추상 타입을 정의
- 컨테이너에 포함된 항목의 집계 정보를 반환할 수 있게 정보를 제공하는 메서드를 컨테이너에 구현
- Leaf 노드는 자신의 값을 기반으로 정보를 제공하는 메서드를 구현
- 예제 - 여러 항로로 구성된 배송 항로
- 화물을 수송하는 전체 항로는 복잡하다.
- 개발팀은 객체 모델을 만들어서 임의 개수의 구간으로 구성된 항로를 표현했다.
- 개발자들은 항로를 임의의, 획일화된 구간의 연속이라고 생각했다.
- 도메인 전문가들은 항로를 논리적인 구획의 연속으로 보고있었다. 또한 대체 항로(subroute) 등 복잡한 로직이 존재했다.
- 새로 알게 된 차이점을 반영하면서 객체 모델이 점점 복잡해졌다.
- COMPOSITE를 적용하면, 하나의 항로는 다른 항로의 조합으로 구성되므로 서로 다른 수준의 항로를 동일하게 다루기에 적절하다.
- 양 지점을 이어 결합한 갖가지 항로의 조합을 이용하면 상세 수준의 항로를 구현할 수 있다.
- 화물을 수송하는 전체 항로는 복잡하다.
728x90
'도메인 주도 설계' 카테고리의 다른 글
[도메인 주도 설계] 14. 모델의 무결성 유지 (2) (0) | 2022.04.01 |
---|---|
[도메인 주도 설계] 14. 모델의 무결성 유지 (1) (0) | 2022.03.25 |
[도메인 주도 설계] 11. 분석 패턴의 적용 (0) | 2022.03.04 |
[도메인 주도 설계] 10. 유연한 설계 (3) (0) | 2022.02.25 |
[도메인 주도 설계] 10. 유연한 설계 (2) (0) | 2022.02.17 |
Comments