어플 아키텍처
- 일반적인 애플리케이션 아키텍처는
- 표현
- 사용자의 요청을 처리하고 정보를 보여줌
- 응용
- 사용자가 요청한 기능을 실행
- 업무 로직을 직접 구현치 않고 도메인 계층을 조합해 기능을 실행한다.
- 도메인
- 시스템이 제공할 도메인 규칙 구현
- 인프라
- DB , 메시징 시스템 등 외부 시스템과 연동을 처리
- 표현
도메인 모델 패턴의 개념
- 마틴 파울러의 정의
- 객체 지향 기법으로 아키텍처 상의 도메인 계층을 구현하는 패턴
- 핵심 목적
- 도메인의 핵심 규칙과 로직을 구현하여, 시스템의 비즈니스 규칙과 데이터를 잘 나타내는 구조를 만드는 것.
CODE
public enum OrderState {
PAYMENT_WAITING {
@Override
public boolean isShippingChangeable() {
return true;
}
},
PREPARING {
@Override
public boolean isShippingChangeable() {
return true;
}
},
SHIPPED, DELIVERING, DELIVERY_COMPLETED;
public boolean isShippingChangeable() {
return false;
}
}
public class ShippingInfo {
private String address;
private String receiver;
// 기타 필요한 배송 정보
// 생성자, getter, setter 등 필요한 메소드
}
public class Order {
private OrderState state;
private ShippingInfo shippingInfo;
public Order(OrderState state) {
this.state = state;
}
public void changeShippingInfo(ShippingInfo newShippingInfo) {
if (!state.isShippingChangeable()) {
throw new IllegalStateException("Shipping info can't be changed in the " + state + " state.");
}
this.shippingInfo = newShippingInfo;
}
// 기타 주문 관련 메소드
}
결
- 도메인 모델 패턴은 비즈니스 로직과 상태를 객체 내부에 캡슐화해야한다
- 주문이라면 주문관련 도메인 로직
- 주문상태면 주문상태관련 도메인 로직
- 어플리케이션의 사용자 인터페이스, 데이터베이스 접근 로직 등에 해당 로직을 직접 처리 X
- 코드 유지보수성 증대, 비즈니스 로지의 중앙집중화!
Uploaded by N2T
'도메인주도개발' 카테고리의 다른 글
도메인 전문가와 개발자 간 지식 공유 (0) | 2023.12.30 |
---|---|
도메인 모델 (0) | 2023.12.30 |
엔티티? (0) | 2023.12.30 |
엔티티 식별자와 밸류 타입 (0) | 2023.12.30 |
도메인이란? (0) | 2023.12.30 |