Tôi chỉ mới bắt đầu trong DDD và tôi đang gặp một số khó khăn trong việc tìm hiểu cách thức phù hợp với tính chất quan hệ của dữ liệu của tôi. Tôi có những gì tôi tin rằng sẽ được coi là gốc tổng hợp của tôi, nhưng tổng hợp cũng có một tổng hợp của riêng mình. Không muốn vi phạm Luật Demeter, tôi tự hỏi nếu tôi đang suy nghĩ về điều này sai và hy vọng rằng một số chuyên gia DDD có thể cung cấp một số cái nhìn sâu sắc.Xử lý các tập hợp lồng nhau trong DDD
Gốc tổng hợp của tôi là đối tượng Account
, trong đó có tổng số nhiều thực thể AccountElement
, là các nhóm hợp lý của các thực thể ProductComponent
riêng lẻ.
Một AccountElement
bên ngoài bối cảnh của một Account
không có ý nghĩa, vì vậy tôi cảm thấy thoải mái với kết luận của tôi rằng đối tượng Account
là gốc tổng hợp của tôi, và tôi dự đoán rằng thực thể có một tổng Elements
tài sản. Đó là bộ sưu tập ProductComponent
khiến tôi bối rối. Tổng hợp này không có ý nghĩa bên ngoài một số AccountElement
và thực sự là không có nghĩa gì ngoài số Account
.
Tôi không nghĩ rằng tôi nên được truy cập cá nhân ProductComponent
đối tượng bằng cách nằm rải rác cách của tôi với nó, như:
var reference = account.Elements(0).ProductComponents(0).ReferenceCode;
Nhưng đồng thời nó không có ý nghĩa (từ góc độ miền) để truy cập trực tiếp ProductComponent
từ một thực thể Account
.
Tôi chắc rằng điều này hơi khó hiểu một chút nếu không có kiến thức về miền của tôi, nhưng tôi hy vọng nó đủ để có được một số phản hồi tốt.
Nếu bạn yêu cầu mức độ làm tổ đối tượng này để làm cho mô hình đối tượng của bạn hoạt động, thì tôi sẽ không lo lắng quá nhiều về Luật Demeter. Xem http://haacked.com/archive/2009/07/14/law-of-demeter-dot-counting.aspx –
Xem thêm http://www.dcmanges.com/blog/37 –
Cảm ơn, bài viết của Phil là hữu ích, và câu hỏi về cách liên quan chặt chẽ đến trẻ em của các trẻ em là gốc tổng hợp thực sự là chìa khóa ở đây. Nhìn vào đó, nó chỉ có ý nghĩa để làm tổ các thực thể. Tôi thấy thoải mái hơn điều này là chính xác vì sau khi đưa ra quyết định này, hướng của mã dường như trực quan hơn rất nhiều. Hoặc theo tinh thần của DDD, tôi có thể nói tốt hơn là nó trừu tượng hơn về ngôn ngữ phổ biến;) –