일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 롬복 어노테이션
- 스프링 스케쥴러
- Java
- 해시
- 전화번호 목록
- 루씬 인 액션
- 완주하지 못한 선수
- 스택/큐
- 영속 자료구조
- 코딩 테스트
- K번째수
- 쿠버네티스
- @EnableScheduling
- @Data
- 고차원 함수
- H-index
- kubenetes
- @Getter
- 커링
- @Setter
- 정렬
- @configuration
- 기능개발
- 다리를 지나는 트럭
- 프로그래머스
- 알고리즘
- 모던 자바 인 액션
- 크론 표현식
- 검색 기능 확장
- 가장 큰 수
- Today
- Total
목록도메인 주도 설계 (25)
Today I Learned
STRATEGY (전략) 여러 프로세스 중 하나를 선택하는 로직 + 여러 프로세스 그 자체로 인해 모델링이 복잡해짐 프로세스에서 변화하는 부분을 별도의 전략 객체로 분리해서 모델에 표현 프로세스의 규칙와 프로세스를 제어하는 행위를 분리 STRATEGY 디자인 패턴에 따라 규칙이나 대체 가능한 프로세스를 구현 예제 - 항로 탐색 정책 Routing Service에서 가장 빠른 항로나 가장 저렴한 항로 중 하나를 선택하는 조건 로직이 나타난다. 이를 STRATEGY로 분리하면 항로 선택 방법을 명확하게 표현할 수 있다. STRATEGY는 선택 가능한 Leg Magnitude Policy의 종류를 명확하게 표현하며, 조건식을 사용하지 않고도 동일한 방법으로 모든 요청을 처리할 수 있다. COMPOSITE (복..
분석 패턴은 풍부한 표현력과 쉬운 구현, 난해하고 미묘한 문제를 처리하는 모델을 제공한다. 예제 - 계좌의 이자 수익 초기 설계는 제 구실을 하긴 하지만, 사용하기 불편하고 변경이 까다로우며 정확한 의미를 전달하지 못한다. 분석 패턴에서의 회계모델 회계의 기본 원리는 보존(conservation)이다. 모든 거래는 하나의 account에서 다른 account로 이동할 뿐이다. 분석 패턴을 적용해서 account를 반영한 새로운 모델을 만들 수 있다. 예제 - 야간 배치 프로그램에 대한 통찰력 기입규칙 새로운 Entry가 입력 계정에 추가되면 기입 규칙이 실행된다. 기입 규칙은 계산 Method을 사용해서 새로운 Entry를 생성하고 이를 Account에 삽입한다. 기입규칙 실행 의존성을 설계할 때 까다로..
선언적인 형식의 설계 SPECIFICATION을 선언적인 형식으로 확장하기 논리 연산을 이용한 SPECIFICATION 조합 술어는 AND, OR, NOT 연산을 사용해서 조합할 수 있다. 논리 연산은 술어에 대해 닫혀있어 SPECIFICATION의 조합은 CLOSUER OF OPERQATION을 의미한다. 포섭관계 새로운 SPECIFICATION이 기존의 SPECIFICATION도 만족시킬 때, 새로운 SPECIFICATION은 기존의 SPECIFICATION을 포섭한다. 포섭은 논리적 함축과 동일하며, A→B로 표현할 수 있다. A가 참이면 B 또한 참이다. AND 연산만을 포함하는 함축을 증명하는 것은 간단하지만, OR와 NOT을 포함하면 복잡해지기 때문에 신중히 사용해야 한다. 받음각 하위 도메인..
CONCEPTUAL CONTOUR (개념적 윤곽) 도메인에 완벽한 일관성이 존재하는 것은 아니지만 나름의 논리와 잠재적인 일관성이 존재한다. 설계 요소(연산, 인터페이스, 클래스, AGGREGATE)를 응집력 있는 단위로 분해하고, 계속적인 리팩터링을 토대로 변경되는 부분과 변경되지 않는 부분을 나누는 중심축을 식별할 수 있다. 변경을 분리하기 위한 패턴을 명확하게 표현하는 CONCEPTUAL CONTOUR를 찾을 수 있다. 예제 - 발생(Accrual)의 윤곽 9장에서 리팩터링한 모델은 기존 모델에 비해 객체를 하나 더 포함하고 있지만 책임 분할은 크게 바뀌지 않았다. 별도로 유지됐던 수수료와 이자 상환은 하나로 모이고, Caculator 클래스의 조건 로직을 통해 만들어지던 Schedule은 수수료와..