도메인 모델 패턴

어플 아키텍처

  • 일반적인 애플리케이션 아키텍처는
    1. 표현
      1. 사용자의 요청을 처리하고 정보를 보여줌
    1. 응용
      1. 사용자가 요청한 기능을 실행
      1. 업무 로직을 직접 구현치 않고 도메인 계층을 조합해 기능을 실행한다.
    1. 도메인
      1. 시스템이 제공할 도메인 규칙 구현
    1. 인프라
      1. 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