Domain Model Pattern

개요

Domain Model은 비즈니스 로직을 객체지향적으로 모델링하는 패턴입니다. 실제 비즈니스 세계의 개념과 규칙을 객체로 표현합니다.

쉬운 예시로 이해하기

커피숍을 예로 들어보겠습니다:

주요 특징

코드 예시

// 주문 도메인 모델
public class Order {
    private List<OrderItem> items;
    private Customer customer;
    private OrderStatus status;

    public void addItem(MenuItem item, int quantity) {
        validateStock(item, quantity);
        items.add(new OrderItem(item, quantity));
    }

    public Money calculateTotal() {
        return items.stream()
                   .map(OrderItem::getSubtotal)
                   .reduce(Money.ZERO, Money::add);
    }

    public void process() {
        validateOrder();
        updateInventory();
        sendNotification();
    }
}

// 고객 도메인 모델
public class Customer {
    private String name;
    private Membership membership;
    private List<Order> orderHistory;

    public Money calculateDiscount(Money amount) {
        return membership.applyDiscount(amount);
    }
}

장점

단점