2012-04-26 18 views
5

Kullanıcıların birbirlerini Twitter'da benzer şekilde takip edebilecekleri bir uygulama üzerinde çalışıyorum.DDD: Bağlantı nesneleri Varlık Nesnesi veya Değer Nesnesidir?

DDD'yi okuduktan sonra, kullanıcılarımın Varlık Nesneleri olduğunu anlıyorum - benzersiz kimliklerini kullanarak onlara başvuruyorum.

Bir kullanıcı diğerini izlerse (yani bir Bağlantı oluşturursa), ilişki çoktan çoğa bir tabloda saklanır. Alanları FollowerID, TargetID ve Status içerir. Her bir Takipçi/Hedef kombinasyonu için (biri Aktif, diğeri Aktif değil) sadece iki kayıt olabilir, böylece özniteliklerine göre nesneleri güvenli bir şekilde tanımlayabilirim.

Yani, Bağlantı nesnelerim Varlık Nesneleri değil, Değer Nesneleri olduğunu düşünüyorum, ancak emin değilim. Bu kararda bana yardımcı olabilir misiniz?

cevap

4

Varlıkların benzersiz olduğunu ve kimliğe sahip olma fikrini taşıyorsunuz (yani yalnızca bir benzersiz kullanıcı var olabilir). Connection, diğer User varlıklarına bağımlıdır. İki kullanıcı arasındaki bazı açıları temsil eder. Bu yön, aktif veya inaktif bir bağlantı olup olmadığıdır. Kullanıcıların bağlandığı verileri içermeden, bir bağlantının kimliği yoktur. Hatta veritabanında kendi birincil anahtarına sahip olabilir, ancak bir alan perspektifinden, kendi kimliğine sahip değildir. Bu nedenle, Connectiondeğeri nesnesi olduğunu söyleyebilirim.


benim sonuca desteklemek için, Microsoft.Net Architecting Applications for the Enterprise, sayfa 187, diyor ki:

değeri nesne sınıfı çoğunlukla verileri içeren ve içerdiği veriler için yaşayan etki alanındaki bir varlık temsil eder. Bir değer nesnesi, içerdiği değerlerin bir kombinasyonuyla tam olarak tanımlanan 'dur. Diğer taraftan, nesnesinin, içerdiği verilerden bağımsız olarak kendi yaşamı ve zengin davranışı vardır. Varlık nesneleri genellikle daha uzun bir kullanım ömrüne sahip nesnelerdir. Bir değer nesnesi, bir öğesinin bir yönünü temsil eder ve yalnızca bir varlıkla ilişkili olarak yaşayabilir.

Ve ayrıca sayfa 189

:

Bir daha yorum varlıkları ve değer nesneler arasındaki farkı açıklamak için gereklidir. Bir değer nesnesi için bir depoya veya eşleştiricisine ihtiyacınız yoktur. Bir varlık için yalnızca bir depoya ihtiyacınız var. Belirli bir varlık için depo (veya eşleştirici), belirli bir varlığa bağlı olan tüm değer nesnelerini kesinlikle alacaktır.

+0

"Hangi kullanıcıların bağlandığı verileri içermiyorsa, bir bağlantının kimliği yoktur" - Bağlantı, FollowerID ve TargetID'nin bir bileşimi için benzersizdir. Yani, kullanıcılara inandığım bir TaregtID ve FollowerID varsa, bir bağlantıyı belirleyebiliriz. Peki bir varlık nesnesi nasıl? –

+0

@HariSubramaniam, başka bir şekilde koyduğu gibi [bu site] (http://lostechies.com/joeocampo/2007/04/23/a-discussion-on-domain-driven-design-value-objects/) diyor ki , "Bir Değer Nesnesi bir Varlık olmadan kendi başına yaşayamaz." Hangisinin hangisinin olduğunu belirlemek her zaman kolay değildir, ancak bunu düşündükten ve araştırdıktan sonra, ona değer bir nesne olmak için yoğun bir şekilde eğimliyim. – Matt

2

Bir süre önce, klonlamayı icat eden bilim adamı hakkında bir karikatür gördüm. Her defasında kendini klonladı, önceki versiyonu imha etti. Sonra gösteri izleyen kişi, iki bilim adamı olduğu için yıkım parçasını durdurmaya ve sabote etmeye karar verdi. Karikatür bazı ilginç varoluşsal sorgulamalarla sona erdi.

Değerler ve varlıklar, bir veya başka bir formda kimlik alanlarına sahip olma veya sahip olma ile ilgili değildir. Nokta, o nesnelere alan perspektifimiz aracılığıyla nasıl bakıyoruz.Eğer onlar değer nesneleriyse, o zaman sadece onların değerleri önemlidir - 1., 3. ve 53. bilim adamı aynıdır. Eğer kimlik umursuyorsak, eğer 3. bilim insanı klonlamayı asla 1'inci olmayacak diye düşünürsek, o zaman neslimiz bir varlıktır.

İlgili konular