시스템이 다루는 현실 세계의 문제 영역 ex) 호텔 예약, 주문 처리, 출결 관리
도메인을 추상화한 개념 모델(클래스, 객체, 관계 등) ex) Order, Product, User 클래스
도메인 규칙을 코드로 실현한 로직 ex) 주문 시 재고 차감, 할인 계산 등
사용자가 상품을 주문하면,
class Order(
val id: Long,
val items: List<OrderItem>,
var status: OrderStatus,
val totalPrice: Money,
var shippingFee: Money = Money(3000)
)
fun completeOrder() {
if (totalPrice >= Money(50000)) {
shippingFee = Money(0)
}
items.forEach { it.product.decreaseStock(it.quantity) }
status = OrderStatus.COMPLETED
}
여기서 이 completeOrder() 함수는 도메인 규칙을 구현한 코드, 즉 비즈니스 로직
도메인 “재고가 있어야 주문할 수 있다" - 현실 규칙
도메인 모델 Order, Product, Stock 클래스 - 개념 구조
비즈니스 로직 product.decreaseStock() 같은 함수 - 규칙을 코드로 구현한 것