Vì vậy, tôi có DAO, DTO và BO. Mã sau đây là kết quả:Tách mối quan tâm - DAO, DTO và BO
// Instantiate a new user repository.
UserRepository rep = new UserRepository();
// Retrieve user by ID (returns DTO) and convert to business object.
User user = rep.GetById(32).ToBusiness<User>();
// Perform business logic.
user.ResetPassword();
user.OtherBusinessLogic("test");
user.FirstName = "Bob";
// Convert business object back to a DTO to save to the database.
rep.Save(user.ToDataTransfer<Data.DTO.User>());
Vì vậy, tôi đang cố tách riêng các mối quan tâm, nhưng tôi muốn loại bỏ "chuyển đổi" trong mã này. "Chuyển đổi" thực sự nằm trong lớp logic nghiệp vụ (lớp DTO không biết gì về lớp logic nghiệp vụ) như một đối tượng mở rộng. DTO chính nó rõ ràng chỉ lưu trữ dữ liệu và không có logic kinh doanh những gì-so-bao giờ hết. UserRepository gọi DAO và vào cuối GetById sử dụng AutoMapper để ánh xạ từ DAO đến DTO. Các "chuyển đổi" (ToBusiness và ToDataTransfer) làm chính xác như họ nói.
Một đồng nghiệp của tôi nghĩ rằng tôi có thể phải có một Kho lưu trữ kinh doanh, nhưng nghĩ rằng nó có thể là một chút clunky. Có suy nghĩ gì không?
Cảm ơn câu trả lời của bạn. Bất kỳ mã mẫu nào bạn có thể cung cấp đều hữu ích. –
Tôi đồng ý với điều này. Bạn nên lấy lại đối tượng kinh doanh của mình và nếu bạn cần chuyển đổi sang DTO thì chuyển đổi đó có thể xảy ra với một công cụ như AutoMapper. –