Saya telah membaca posting yang tak terhitung jumlahnya tentang perbedaan antara Entitas dan objek Nilai dan sementara saya berpikir bahwa setidaknya secara konseptual saya mengerti bagaimana keduanya berbeda, tampaknya dalam beberapa posting ini penulis menganggap konsep domain tertentu sebagai VO hanya karena itu tidak dapat diubah (dengan demikian keadaannya tidak akan pernah berubah, setidaknya dalam model domain tertentu).
Apakah Anda setuju bahwa jika keadaan suatu objek tidak akan pernah berubah dalam model domain tertentu, maka objek ini seharusnya tidak pernah menjadi entitas? Mengapa?
domain-driven-design
bckpwrld
sumber
sumber
Jawaban:
Going by the book (Evans, 2004), "Objek yang didefinisikan terutama oleh identitasnya disebut ENTITY". Definisi ini tidak tergantung apakah objek dapat berubah atau tidak berubah. Saya pikir itu jauh lebih kecil kemungkinannya untuk objek yang tidak dapat diubah untuk menjadi entitas dalam domain yang diberikan, jadi itu heuristik yang berguna untuk memutuskan apakah suatu objek adalah "objek nilai" atau "entitas", tetapi itu bukan bagian dari definisi.
Misalnya, katakanlah Anda memiliki entitas yang mewakili karyawan, yang mungkin atau mungkin tidak memiliki atasan langsung. Jika Anda memutuskan untuk mewakili gagasan tidak memiliki atasan langsung sebagai referensi ke objek atasan "null", maka objek atasan "null" dianggap wajar sebagai entitas. Dan Anda mungkin bisa membuat objek "null" ini tidak berubah.
sumber
Cara saya membaca ini adalah bahwa objek nilai adalah objek yang tidak memiliki identitas sendiri dan tidak ada hubungannya dengan keadaannya berubah atau tidak berubah. Ini membuat perbedaan antara entitas dan objek nilai bahwa entitas memiliki kunci utama, sedangkan objek nilai tidak; itu akan memiliki kunci asing untuk entitas yang dimilikinya.
http://lostechies.com/joeocampo/2007/04/23/a-discussion-on-domain-driven-design-value-objects/
Saya masih bisa mengubah properti objek nilai, tetapi tidak perlu diidentifikasi secara independen dari entitas itu.
sumber