DDD

2010-02-05 13 views
14

'da iç içe geçmiş kümelerle ilgileniyorum DDD'ye yeni başlıyorum ve verilerimin ilişkisel doğasını nasıl karşılayacağımı bulmakta biraz sorun yaşıyorum. Topluluğumun kökü olarak kabul edileceğine inandığım şeylere sahibim, ancak toplamın da kendi toplamı var. Demeter Yasasını ihlal etmek istemiyorum, bunun yanlış olduğunu düşündüğümü merak ediyorum ve bazı DDD uzmanlarının birtakım içgörüler sunabileceğini umuyorum.DDD

Toprağımdaki kök, AccountElement numaralı varlıkların toplamı olan ve ProductComponent varlıklarının mantıksal gruplandırmaları olan Account nesnesidir.

bir Account bağlamında bir AccountElement dışında bir anlamı yoktur, bu yüzden Account nesne toplamı, toplam köküdür benim sonuca rahatım, ben varlık toplu Elements özelliğine sahip olduğunu tahmin ediyoruz. Kafamı karıştıran ProductComponent koleksiyonu. Bu topluluğun AccountElement dışında bir anlamı yoktur ve gerçekten'un Account dışında bir anlamı yoktur.

var reference = account.Elements(0).ProductComponents(0).ReferenceCode; 

Ama (etki alanı açısından) bir anlam ifade etmiyor, aynı zamanda en:

ben gibi, ona yolumu süsleyen tek tek ProductComponent nesneleri erişen gerektiğini düşünmüyorum ProductComponent'a doğrudan bir Account varlıktan erişebilirsiniz.

Eminim ki, alanım hakkında bilgi sahibi olmadan bunu anlamak biraz zor, ama umarım iyi geribildirim almak için yeterlidir.

+3

Nesne modelinizin çalışması için bu yuva nesnelere gereksiniminiz varsa, Demeter Yasası hakkında çok fazla endişe etmem. Bkz. Http://haacked.com/archive/2009/07/14/law-of-demeter-dot-counting.aspx –

+0

Ayrıca bkz. Http://www.dcmanges.com/blog/37 –

+1

Teşekkürler, Phil'in makalesi Yararlı ve çocukların çocuklarının ayrılmaz bir şekilde bağlantılı olduğu sorusu, topluluğun köküdür. Buna bakacak olursak, sadece varlıkların yuvalanması mantıklıdır. Daha rahatım, bu doğru. Çünkü bu kararı verdikten sonra, kodun yönü çok daha sezgisel gibi görünüyor. Ya da DDD'nin ruhuyla, her yerde mevcut olan dilin daha soyut bir soyutlaması olduğunu söyleyebilirim;) –

cevap

1

Bağlantılı Robert makalesi iyi bir tanesidir. ProductComponent yalnızca AccountElement ve AccountElement bağlamında mevcutsa, yalnızca Hesap bağlamında mevcutsa, daha sonra ProductComponent eklentisi, Hesap kapsamındadır.

İlgili konular