DDD: Değişken olmayan nesneler de varlık olabilir mi?


9

Varlıklar ve Değer nesneleri arasındaki farklılıklar hakkında sayısız gönderi okudum ve en azından kavramsal olarak ikisinin nasıl farklı olduğunu anladığımı düşünürken, bu yazıların bazılarında yazarların belirli bir etki alanı kavramını basitçe VO olarak gördükleri anlaşılıyor. değişmezdir (bu nedenle durumu en azından söz konusu etki alanı modeli dahilinde asla değişmez).

Bir nesnenin durumu hiçbir zaman belirli bir etki alanı modeli içinde değişmezse, bu nesnenin asla bir varlık olmaması gerektiğini kabul ediyor musunuz? Neden?


Bazı DDD'leri öğrenmem gerekiyor, böylece bu soruların bazılarına akıllıca cevap verebiliyorum. Birçok yazılım geliştiricisinin bunun gibi basit kavramlarla ilgili zorluğunun, DDD'nin bir programlama metodolojisi olduğu yanlış fikrinden kaynaklandığından şüpheleniyorum.
Robert Harvey

Yanıtlar:


4

Kitaba göre (Evans, 2004), "Öncelikle kimliğiyle tanımlanan bir nesneye ENTITY denir". Bu tanım, nesnenin değişebilir ya da değişmez olup olmadığından bağımsızdır. Değişmez bir nesnenin belirli bir alandaki bir varlık olması çok daha az olasıdır , bu nedenle bir nesnenin "değer nesnesi" mi, yoksa "varlık" mı olduğuna karar vermek için yararlı bir buluşsal yöntemdir, ancak bu tanımın bir parçası değildir.

Örneğin, doğrudan bir amiri olan veya olmayan bir çalışanı temsil eden bir kuruluşunuz olduğunu varsayalım. Doğrudan denetleyicinin "boş" denetleyici nesnesine başvuru olarak bulunmama fikrini temsil etmeye karar verirseniz, "boş" denetleyici nesnesi makul olarak bir varlık olarak kabul edilir. Ve muhtemelen bu "null" nesneyi değişmez hale getirebilirsiniz.


1
+1 Yönetici belirli bir bağlamda veya alt etki alanında salt okunur (değişmez) olabilir, ancak bu onun kimliği olmadığı anlamına gelmez.
Adrian Schneider

Beni yoğun olduğun için affet ama danışman örneğini tam olarak anlamıyorum. Etki alanında, amirle ilgili iki kavramımız olacağını mı söylüyorsunuz? Bir kavram, denetledikleri çalışanlara sahip süpervizörleri temsil eder (kodda bu kavram değişebilir Süpervizör sınıfı olarak uygulanır), diğer kavram ise herhangi bir çalışanı süpervizör olmayan süpervizörü tanımlar (ve bu kavram kodda null olarak uygulanır) ?
bckpwrld

@bckpwrld Hayır, kesinlikle bir Boş Nesne anlamına geliyor .
maaartinus

2

Bunu okuma şeklim, bir değer nesnesinin kendi başına bir kimliği olmayan ve durumunun değişmesi ya da değişmemesi ile ilgisi olmayan bir nesnedir. Bu, bir varlık ve bir varlığın birincil anahtarı olan bir değer nesnesi arasındaki farkı yaratırken değer nesnesi bulunmaz; ait olduğu tüzel kişinin yabancı bir anahtarı olacaktır.

http://lostechies.com/joeocampo/2007/04/23/a-discussion-on-domain-driven-design-value-objects/

Yine de değer nesnesinin özelliklerini değiştirebilirim, ancak varlığından bağımsız olarak tanımlanması gerekmez.


Bir metafor olarak kimlik olarak ilişkisel veritabanlarından (birincil anahtar) terminolojiyi karıştırdım, lütfen kelimenin tam anlamıyla kullanmayın
Kevin

Anladığım kadarıyla, kodda VO'lar değişebilir bir tiple temsil edilse bile (bu nedenle bu tipteki örnekler özelliklerini değiştirebilir), kavramsal olarak bu VO'lar hala değişmezdir. Bu nedenle, belirli bir VO'yu temsil eden bir örneğin bir özelliğinin değiştirilmesi, artık bu aynı örneğin farklı bir VO'yu temsil ettiği anlamına gelir. Başka bir deyişle,
VO'lar
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.