상황고객이 특정 상점을 여러 차례 신고하여 차단된 상태에서상점이 물건을 등록하지 못하도록 하는 상황을 가정상품 등록 기능을 구현한 응용 서비스는 상점 계정이 차단 상태가 아닐 때만 상품을 생성할 수 있다.기존 응용 서비스 코드 예시public class RegisterProductService { public ProductId registerNewProduct(NewProductRequest req) { Store store = storeRepository.findById(req.getStoreId()); checkNull(store); if (store.isBlocked()) { throw new StoreBlockedException(); } ProductId id = productRepository..
도메인 모델의 정의개념적 표현도메인의 주요 구성 요소, 기능 , 관계 등을 포괄적으로 이해하기 위한 모델주문 도메인 모델 예시객체 모델 구성 요소객체를 모델링하는 부분에서 유리함상태 다이어그램 이용한 주문 상태 모델링관계가 중요한 도메인인 경우 그래프로 도메인을 모델링이 가능하다.계산 규칙이 중요하다면 수학 공식을 활용해서 도메인 모델을 만들 수 있음.표현방식은 도메인을 이해할 수만 있으면 어떤 것이든 상관없다. Uploaded by N2T
어플 아키텍처일반적인 애플리케이션 아키텍처는 표현사용자의 요청을 처리하고 정보를 보여줌응용사용자가 요청한 기능을 실행업무 로직을 직접 구현치 않고 도메인 계층을 조합해 기능을 실행한다.도메인시스템이 제공할 도메인 규칙 구현인프라DB , 메시징 시스템 등 외부 시스템과 연동을 처리도메인 모델 패턴의 개념마틴 파울러의 정의객체 지향 기법으로 아키텍처 상의 도메인 계층을 구현하는 패턴핵심 목적도메인의 핵심 규칙과 로직을 구현하여, 시스템의 비즈니스 규칙과 데이터를 잘 나타내는 구조를 만드는 것.CODEpublic enum OrderState { PAYMENT_WAITING { @Override public boolean isShippingChangeable() { return true; } }, PREPARI..
엔티티의 정의와 특징식별자고유한 식별자엔티티의 변화와 식별자의 불변성속성 변화와 식별자엔티티의 속성이 변경되어도 식별자가 변하지 않음.주문의 배송지 주소나 상태가 변경되어도 식별자가 동일하게 유지되어야함동등성동등성 비교equals()hashCodepublic class Order { private String orderNumber; private List orderLines; // 기타 필드 // 기타 메서드 ... @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Order ot..
엔티티 식별자의 중요성도메인 의미 전달엔티티 식별자는 단순한 데이터 이상의 의미를 가질 수 있다.신용카드 번호나 이메일 주소는 그 자체로 특정 도메인의 중요한 정보를 나타낸다.밸류 타입을 이용한 식별자 표현의미 있는 식별자단순한 String 이나 int 대신에 식별자를 위한 밸류 타입을 사용하면 해당 데이터가 갖는 도메인 내의 특별한 의미를 더 명확하게 표현타입 안정성식별자에 특정 밸류 타입을 사용함으로오류 가능성을 줄이고 코드의 명확성을 높인다.OrderNo 타입을 사용하면 주문번호만을 위한 로직과 유효성 검사를 그 타입 안에 캡슐화함public class OrderNo { private String value; public OrderNo(String value) { // 유효성 검사, 형식 검사 등 ..