https://catsbi.oopy.io/bf003ff6-2912-4714-8ac2-44eeb7becc93
ddd-examples/
│
├── README.md # 📍 현재 파일 (프로젝트 개요)
├── DDD_ARCHITECTURE.md # 🏗️ 상세 아키텍처 설명
├── DDD_COMPARISON.md # 🔄 Before/After 상세 비교
│
└── src/main/java/.../ddd/
│
├── application/ # 애플리케이션 레이어
│ ├── event/
│ ├── service/
│ │ └──OrderService.java # 애플리케이션 서비스 (조율)
│ ├── command/ # Command 객체 (입력)
│ │ ├── CreateOrderCommand.java
│ │ ├── PayOrderCommand.java
│ │ ├── CancelOrderCommand.java
│ │ └── OrderItemCommand.java
│ ├── dto/ # Response 객체 (출력)
│ │ ├── OrderDetailRes.java
│ │ └── OrderItemRes.java
│ └── service/ # 외부 도메인 클라이언트
│ ├── ProductClient.java
│ ├── CustomerClient.java
│ └── CouponClient.java
│
├── domain/ # 도메인 레이어 (핵심)
│ ├── entity/ # 엔티티
│ │ ├── Order.java # 애그리거트 루트
│ │ └── OrderItem.java # 엔티티
│ ├── vo/ # 값 객체
│ │ ├── Money.java
│ │ ├── Quantity.java
│ │ ├── OrderStatus.java
│ │ ├── CustomerId.java
│ │ ├── ProductId.java
│ │ ├── CouponCode.java
│ │ └── ShippingAddress.java
│ ├── service/ # 도메인 서비스
│ │ └── OrderDomainService.java # 간단한 비즈니스 로직
│ ├── event/ # 도메인 이벤트
│ │ ├── OrderDomainEvent.java
│ │ ├── OrderCreatedEvent.java
│ │ ├── OrderPaidEvent.java
│ │ └── OrderCancelledEvent.java
│ └── repository/
│ └── OrderRepository.java
│
├── infrastructure/ # 인프라 레이어
│ └── external/ # 외부 도메인 통신
│ └── dto/ # 외부 도메인 DTO
│ │ ├── ProductDTO.java
│ │ ├── CustomerDTO.java
│ │ └── CouponDTO.java
│ ├── CouponClientImpl.java # 외부 도메인 호출 모듈
│ ├── CustomerClientImpl.java # 외부 도메인 호출 모듈
│ └── ProductClientImpl.java # 외부 도메인 호출 모듈
│
└── presentation/
├── dto/
└── controller/ # 표현 계층 (Presentation Layer)
└── OrderController.java # REST API 컨트롤러