Tôi đang nghiên cứu DDD những ngày này, và tôi có một số câu hỏi liên quan đến cách quản lý kho lưu trữ với DDD.
Thật ra, tôi đã gặp hai sở hữu:
Đầu tiên
Cách quản lý dịch vụ đầu tiên tôi đọc là tiêm một kho lưu trữ và mô hình miền trong một dịch vụ ứng dụng.
Theo cách này, trong một trong các phương thức dịch vụ ứng dụng, chúng tôi gọi một phương thức dịch vụ miền (kiểm tra các quy tắc nghiệp vụ) và nếu điều kiện tốt, kho lưu trữ được gọi trên một phương thức đặc biệt để duy trì / truy xuất thực thể từ cơ sở dữ liệu.
Một cách đơn giản để làm điều này có thể là:
class ApplicationService{
constructor(domainService, repository){
this.domainService = domainService
this.repository = repository
}
postAction(data){
if(this.domainService.validateRules(data)){
this.repository.persist(new Entity(data.name, data.surname))
}
// ...
}
}
Cái thứ hai
Khả năng thứ hai là tiêm kho lưu trữ bên trong domainService và chỉ sử dụng kho lưu trữ thông qua dịch vụ miền:
class ApplicationService{
constructor(domainService){
this.domainService = domainService
}
postAction(data){
if(this.domainService.persist(data)){
console.log('all is good')
}
// ...
}
}
class DomainService{
constructor(repository){
this.repository = repository
}
persist(data){
if(this.validateRules(data)){
this.repository.save(new Entity(data.name))
}
}
validateRules(data){
// returns a rule matching
}
}
Từ bây giờ, tôi không thể phân biệt cái nào là tốt nhất (nếu có cái tốt nhất) hoặc cái mà chúng ám chỉ cả trong bối cảnh của chúng.
Bạn có thể cung cấp cho tôi ví dụ nơi một người có thể tốt hơn người khác và tại sao?