반응형
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 |
Tags
- 스프링 스케쥴러
- 알고리즘
- 커링
- Java
- @Setter
- 롬복 어노테이션
- K번째수
- H-index
- 영속 자료구조
- 쿠버네티스
- kubenetes
- 프로그래머스
- 검색 기능 확장
- 기능개발
- @EnableScheduling
- 해시
- 다리를 지나는 트럭
- @Getter
- 완주하지 못한 선수
- 스택/큐
- 코딩 테스트
- 크론 표현식
- @configuration
- 전화번호 목록
- 루씬 인 액션
- @Data
- 정렬
- 고차원 함수
- 가장 큰 수
- 모던 자바 인 액션
Archives
- Today
- Total
Today I Learned
[도메인 주도 설계] 09. 암시적인 개념을 명확하게 (2) 본문
728x90
SPECIFICATION(명세)
- 다른 객체에 대한 제약조건을 기술
- 다른 객체가 SPECIFICATION에 명시된 기준을 만족하는지 검사
- 객체를 평가할 수 있는 술어를 VALUE OBJECT 형식으로 구성
- 규칙이 복잡할 때는 논리 연산자를 사용해서 술어를 결합
SPECIFICATION의 적용과 구현
- SPECIFICATION 패턴을 적용하면 다른 방법을 사용해서 구현해야 하는 상황에서도 일관된 모델을 사용할 수 있다.
- SPECIFICATION의 세가지 용도
- 검증 : 객체가 어떤 요건을 충족시키거나 특정목적으로 사용할 수 있는지 가늠
- 선택 : 컬렉션 내의 객체를 선택(ex. 기한이 만료된 송장 목록을 조회)
- 구축 : 특정한 요구사항을 만족하는 새로운 객체의 생성을 명시
- 검증
- SPECIFICATION의 가장 단순한 용도이며, SPECIFICATION의 개념을 가장 직관적으로 설명해주는 방식
- 선택(또는 질의)
- 조건에 부합하는지 판단하기 위해 개별 객체를 테스트하며, 테스트 결과를 기반으로 특정한 행위를 수행하기 위해 사용
- RDB를 사용한다면 SPECIFICATION은 도메인 객체에 대한 질의 접근을 제공하거나, 어떤 질의문을 사용하는지 제어(SQL문은 REPOSITORY에 위치)하는 식으로 사용할 수 있음
- 요청 구축(생성)
- SPECIFICATION에 명시된 조건을 만족하는 새로운 객체나 객체집합을 생성 또는 재구성하는 것이 목적
- ex) 마하 2의 속도, 1800 마일 이상의 비행거리, 5천만 달러 이하 예산으로 개발 가능한 전투기
- SPECIFICATION을 사용해서 생성기(generator)의 인터페이스를 정의할 때의 장점
- 생성기의 구현을 인터페이스로부터 분리 가능
- 인터페이스가 생성 규칙을 명시적으로 나타내므로 연산의 세부사항을 이해하지 않고도 결과물을 예상 가능
- 생성 요청을 표현하는 코드가 클라이언트에 존재하여 더 유연하고 개선 가능한 인터페이스를 얻음
- 생성기에 대한 입력을 정의하는 명시적인 방법이 모델에 포함되어있어 테스트하기 수월해짐
- SPECIFICATION에 명시된 조건을 만족하는 새로운 객체나 객체집합을 생성 또는 재구성하는 것이 목적
728x90
'도메인 주도 설계' 카테고리의 다른 글
[도메인 주도 설계] 10. 유연한 설계 (2) (0) | 2022.02.17 |
---|---|
[도메인 주도 설계] 10. 유연한 설계 (1) (0) | 2022.02.11 |
[도메인 주도 설계] 09. 암시적인 개념을 명확하게 (1) (0) | 2022.01.20 |
[도메인 주도 설계] 08. 도약 (0) | 2022.01.11 |
[도메인 주도 설계] 3부. 더 심층적인 통찰력을 향한 리팩터링 (1) | 2022.01.11 |
Comments