我正在處理一個項目,其中有一個聚合內的值對象(稱爲SkillProfile
)。彙總根目錄是User
實體,User
與它的SkillProfile
具有單向一對一關聯。業務中有一個使用案例,SkillProfile
可以與另一個User
共享,但始終作爲副本(因此修改其中一個配置文件不會更改任何其他用戶配置文件)。到現在爲止還挺好。DDD中的值對象上有id字段
現在企業有了新的要求,應該可以在報告中看到哪些用戶共享相同的技能檔案。這項要求不能通過技能檔案中的等同方法來實現,因爲技能檔案巧合地具有相同的值,但在明確地執行時並不「共享」。當然,技能配置文件必須是不可變的舊要求仍然有效。
所以在這裏我的問題:在SkillProfile
類上發明一個新字段「Id」或「SharingCode」是否是一個好主意,因此給它一些類型的身份,儘管它仍然是一個值對象而不是實體,因爲它沒有狀態或生命週期?
我認爲你所說的不再是價值對象。如果它必須是可識別的,那麼它是一個實體。另一種選擇可能是使用聚合(用戶)ID來識別技能配置文件的來源,但我不深入理解您的域,所以我不確定它是否可行。 – inf3rno