DDD(2)——“图书管理系统”,DDD 完整架构范例

图书管理系统 (book-management-system)
│
├─ 用户界面层 (ui)
│  ├─ controller
│  │  ├─ UserController.java
│  │  ├─ BookController.java
│  │  └─ LoanController.java
│  └─ dto
│     ├─ UserDTO.java
│     ├─ BookDTO.java
│     └─ LoanDTO.java
│
├─ 应用层 (application)
│  ├─ service
│  │  ├─ UserService.java
│  │  ├─ BookService.java
│  │  └─ LoanService.java
│  └─ dto
│     ├─ UserDTO.java
│     ├─ BookDTO.java
│     └─ LoanDTO.java
│
├─ 领域层 (domain)
│  ├─ model
│  │  ├─ user
│  │  │  ├─ User.java
│  │  │  └─ UserEmail.java (Value Object)
│  │  ├─ book
│  │  │  ├─ Book.java
│  │  │  ├─ ISBN.java (Value Object)
│  │  │  └─ BookStatus.java (Enumeration)
│  │  └─ loan
│  │     ├─ Loan.java
│  │     ├─ LoanId.java (Value Object)
│  │     └─ LoanStatus.java (Enumeration)
│  ├─ service
│  │  ├─ BookDomainService.java
│  │  └─ LoanDomainService.java
│  ├─ event
│  │  └─ BookLoanedEvent.java
│  └─ repository
│     ├─ UserRepository.java
│     ├─ BookRepository.java
│     └─ LoanRepository.java
│
└─ 基础设施层 (infrastructure)
   ├─ config
   │  └─ DatabaseConfig.java
   ├─ repository
   │  ├─ db
   │  │  ├─ DbUserRepository.java
   │  │  ├─ DbBookRepository.java
   │  │  └─ DbLoanRepository.java
   │  └─ cache
   │     └─ CacheUserRepository.java
   └─ utils
      └─ NotificationService.java

上述结构展示了一个图书管理系统的 DDD 架构,包括用户、图书和借阅三个主要的领域概念。在实际的项目中,每一个类、服务和仓库内部可能还有许多的方法和逻辑,但为了简洁,这里仅列出了结构和主要的类名。