Sau nhiều lần đọc và suy nghĩ khi tôi bắt đầu quấn đầu vào DDD, tôi hơi bối rối về các phương pháp hay nhất để xử lý các hệ thống phân cấp phức tạp. nguồn gốc. Tôi nghĩ đây là một câu hỏi thường gặp nhưng sau khi đọc vô số ví dụ và thảo luận, không có ai nói về vấn đề tôi đang gặp.Vui lòng làm rõ cách tạo/cập nhật xảy ra đối với các thực thể con của một tập hợp tổng hợp
Nếu tôi phù hợp với tư duy DDD, các thực thể bên dưới gốc tổng hợp sẽ không thay đổi. Đây là mấu chốt của rắc rối của tôi, vì vậy nếu điều đó không đúng, đó là lý do tại sao tôi bị mất.
Đây là ví dụ được chế tạo ... hy vọng nó chứa đủ nước để thảo luận.
Hãy xem xét chính sách bảo hiểm ô tô (Tôi không có bảo hiểm, nhưng điều này khớp với ngôn ngữ tôi nghe khi trên điện thoại với công ty bảo hiểm của tôi).
Chính sách rõ ràng là một thực thể. Trong chính sách, giả sử chúng ta có Tự động. Tự động, vì lợi ích của ví dụ này, chỉ tồn tại trong một chính sách (có thể bạn có thể chuyển tự động sang chính sách khác, vì vậy đây cũng là tiềm năng cho tổng hợp, thay đổi Chính sách ... nhưng giả sử nó đơn giản hơn bây giờ) . Vì một Auto không thể tồn tại mà không có một Policy, tôi nghĩ nó nên là một thực thể chứ không phải là một gốc. Vì vậy, chính sách trong trường hợp này là một gốc tổng hợp.
Bây giờ, để tạo Chính sách, giả sử nó phải có ít nhất một ô tô. Đây là nơi tôi cảm thấy thất vọng. Giả sử Auto khá phức tạp, bao gồm nhiều trường và có thể là một đứa trẻ cho nơi nó được thu thập (một Vị trí). Nếu tôi hiểu chính xác, một nhà xây dựng "tạo Chính sách"/nhà máy sẽ phải lấy đầu vào là Tự động hoặc bị hạn chế thông qua trình tạo không được tạo mà không có Tự động này. Và sự sáng tạo của Auto, vì nó là một thực thể, không thể được thực hiện trước (bởi vì nó là bất biến? Có lẽ đây chỉ là một cách giải thích không chính xác). Vì vậy, bạn không thể nói Auto mới và sau đó setX, setY, add (Z).
Nếu tự động là hơi tầm thường, bạn sẽ phải xây dựng một hệ thống phân cấp lớn của các nhà xây dựng và như vậy để cố gắng quản lý việc tạo Tự động trong ngữ cảnh của Chính sách.
Một bước nữa cho điều này là sau, sau khi Chính sách được tạo và muốn thêm một Tự động khác ... hoặc cập nhật một Tự động hiện có. Rõ ràng, các chính sách kiểm soát này ... tốt ... nhưng Policy.addAuto() sẽ không hoàn toàn bay vì người ta không thể chỉ vượt qua trong một Auto mới (phải không !?). Ví dụ nói những thứ như Policy.addAuto (VIN, make, model, v.v.) nhưng tất cả đều đơn giản đến mức trông hợp lý. Nhưng nếu phương pháp tiếp cận phương pháp nhà máy này tách rời với quá nhiều tham số (toàn bộ giao diện Tự động, có thể hiểu được) tôi cần một giải pháp.
Từ thời điểm đó trong suy nghĩ của tôi, tôi nhận ra rằng có một tham chiếu tạm thời cho một thực thể là OK. Vì vậy, có thể nó là tốt để có một thực thể được tạo ra bên ngoài của cha mẹ của nó trong tổng hợp trong một môi trường thoáng qua, vì vậy có thể nó là OK để nói điều gì đó như:
auto = AutoFactory.createAuto(); auto.setX auto.setY
hoặc nếu gắn bó với tính bất biến, AutoBuilder.new(). SetX(). SetY(). Xây dựng()
và sau đó có nó được sắp xếp ra khi bạn nói chính sách .addAuto (tự động)
Ví dụ bảo hiểm này trở nên thú vị hơn nếu bạn thêm Sự kiện, chẳng hạn như Tai nạn với PolicyReport hoặc RepairEstimates ... một số đối tượng giá trị nhưng hầu hết các thực thể đều vô nghĩa bên ngoài chính sách ... tại ít nhất cho ví dụ đơn giản của tôi.
Vòng đời của Chính sách với hệ thống phân cấp đang phát triển theo thời gian có vẻ là hình ảnh cơ bản tôi phải vẽ trước khi bắt đầu đào sâu ... và đó là khái niệm nhà máy hoặc cách các thực thể con được xây dựng/gắn với một thư mục tổng hợp rằng tôi đã không nhìn thấy một ví dụ vững chắc của.
Tôi nghĩ tôi thân thiết. Hy vọng điều này là rõ ràng và không chỉ là một câu hỏi thường gặp lặp lại có câu trả lời tất cả các nơi.
christian, tôi nghĩ câu hỏi chính về tổng hợp được giới hạn nhất quán hoặc tính nhất quán giao dịch tôi cũng sẽ nói. Đặt câu hỏi này. Thông tin tối thiểu REAL bạn cần để tạo chính sách là gì? Chỉ là sự sáng tạo. Tất cả những gì bạn cần là rất ít để làm cho nó "hợp lệ". Sau đó, bạn ASSIGN, một tự động cho nó, (chính sách không xây dựng AUTOS). Hiểu rồi? Tôi làm việc cho một công ty bảo hiểm. Tôi sẽ không lo lắng nhiều về chính sách. Nó đầu tiên bắt đầu với một câu trích dẫn, và trước đó là một dẫn đầu. Vì vậy, tất cả những gì bạn phải làm là "liên kết" tất cả thông tin đó với chính sách bằng cách suy ra nhận dạng từ dữ liệu được thu thập của bạn. –