Tôi có câu hỏi liên quan đến việc kiểm tra tính duy nhất trong DDD. Tôi biết đã có một số câu hỏi về điều này trên stackoverflow, nhưng họ không thực sự trả lời nghi ngờ của tôixác thực duy nhất trong DDD
Có thể cho một tổng thể để giữ tài liệu tham khảo của kho để kiểm tra tính độc đáo khi cập nhật/chèn vào cơ sở dữ liệu? Hoặc đây là nhiệm vụ được thực hiện bởi dịch vụ ứng dụng thay vì mô hình miền?
Hãy nói rằng tôi muốn kiểm tra xem tên người dùng của mô hình tài khoản là duy nhất khi người dùng đăng ký Có một số phương pháp mà tôi có thể nghĩ đến:
- tài UserRepository mô hình tham chiếu, thực hiện kiểm tra tính độc đáo trong Validate()
- Tạo dịch vụ miền để kiểm tra tính độc đáo, sử dụng UserRepository (điều này có vẻ hơi lạ đối với tôi vì tôi nghĩ dịch vụ tên miền thông thường chỉ được sử dụng trong trường hợp khoảng logic đến nhiều mô hình miền)
- Tạo đối tượng đặc tả trong lớp miền, có tham chiếu đến Sử dụng rRepository để đóng gói quy tắc kiểm tra duy nhất và lớp dịch vụ ứng dụng sử dụng quy tắc này để thực hiện việc kiểm tra trước khi cập nhật/chèn
Và nếu tôi sử dụng tiêm phụ thuộc, tôi vẫn thắc mắc về cách đưa UserRepository vào User trong cách tiếp cận 1, hoặc dịch vụ miền trong phương pháp 2, hoặc dịch vụ ứng dụng trong phương pháp 3, bởi vì trong mọi trường hợp, đối tượng User/domain service/specification, tôi cần phải tạo đối tượng theo cách thủ công, vì vậy tùy chọn duy nhất tôi đang sử dụng định vị dịch vụ trong IoC để có được ví dụ. Nhưng dịch vụ định vị là một mô hình chống vì vậy tôi muốn tránh nó
Bất kỳ mẫu mã sẽ được nhiều đánh giá cao
Tôi sẽ nói bạn nên triển khai điều này trong lớp dịch vụ. Để cụ thể hơn, hãy xác định một lớp trình xác nhận hợp lệ cho một loại logic nghiệp vụ cụ thể (lệnh của bạn) và xử lý xác thực trong một trình trang trí mà bạn quấn quanh lớp dịch vụ. – Steven
Điều này có hữu ích không? http://stackoverflow.com/a/11958251/625332 – Dmitry
@Steven vì vậy tôi nên tạo UserValidator để thực hiện việc kiểm tra Người dùng trong lớp dịch vụ? Nó được coi là rò rỉ quy tắc kinh doanh (tính duy nhất của tên người dùng) bên ngoài lớp miền? –