Câu hỏi này là ngôn ngữ bất khả tri nhưng tôi là người C# nên tôi sử dụng thuật ngữ POCO để chỉ một đối tượng chỉ lưu trữ dữ liệu trước, thường sử dụng các trường getter và setter.Làm cách nào để tách xác thực dữ liệu khỏi các đối tượng miền đơn giản của tôi (POCO)?
Tôi vừa mới làm lại Mô hình miền của mình để trở thành siêu tối ưu POCO và còn lại với một vài lo ngại về cách đảm bảo rằng giá trị thuộc tính có ý nghĩa với miền.
Ví dụ: EndDate của Dịch vụ không được vượt quá EndDate của Hợp đồng mà Dịch vụ đang ở dưới. Tuy nhiên, nó có vẻ như một sự vi phạm của SOLID để đặt kiểm tra vào Service.EndDate setter, chưa kể rằng khi số lượng xác nhận cần được thực hiện phát triển các lớp POCO của tôi sẽ trở nên lộn xộn.
Tôi có một số giải pháp (sẽ đăng trong câu trả lời), nhưng họ có những nhược điểm của họ và tự hỏi một số phương pháp ưa thích để giải quyết tình thế khó xử này là gì?
Phải, các đối tượng này không đóng gói hành vi. Đó là toàn bộ vấn đề. Chúng đại diện cho miền của tôi. Đó là nó. Hành vi được cung cấp ở nơi khác. –
Miền của bạn không có hành vi? –
Mô hình miền không có hành vi. hành vi được gắn liền với chúng một cách riêng biệt. Dịch vụ thực hiện các công cụ bằng cách sử dụng các mô hình. Ít nhất đó là đọc của tôi về toàn bộ điều DDD. –