2013-03-08 20 views
5

Fabrikaları etki alanı tasarımında nasıl uygulayacağımı bilmek isterim. (örnekler)DDD - Fabrikalar nasıl uygulanır

Fabrikaların arayüzleri ve uygulamaları nereye yerleştirilmelidir? Fabrikaların oluşturduğu Domain nesneleri için arayüz oluşturmam gerekir mi? Depolar, hizmetler, hizmetler için fabrikalar oluşturmam gerekiyor mu?

Dependency Injection Containers kullanıyorum, bunları fabrikalarla nasıl bir araya getirebilirim?

Teşekkürler.

+2

imho bu sorunun yanlış bir şekilde kapatıldığından, DDD'deki fabrikalar hakkında konuşmak, genel olarak fabrikalar hakkında konuşmaktan oldukça iyidir. Bunları nasıl biçimlendirmek iyi bir sorudur çünkü tipik olarak üç yaklaşım vardır: fabrikaları ayırmak, depoları fabrikalar olarak işlemeye ya da sadece “yeni” alan varlıklarına izin vermek. – jgauffin

+0

Ancak, sorunuzu genel olarak belirsiz hale getirdiğinden, genel olarak alan varlıklarıyla ilgili soruları karıştırmayın. Spesifik olsun veya birden fazla soru oluşturun. – jgauffin

cevap

10

Fabrikalar genellikle statik, basit sınıflar olmalıdır. Ayrıca oluşturdukları varlık veya değer nesnesinde statik yöntemler olarak uygulanabilirler. Fabrikalar, doğrudan etki alanı nesneleri ve yalnızca alan adı nesneleri oluşturmalıdır. Dahası, fabrikalar bağımlılık enjeksiyonu ile bağlantılı olmamalıdır, çünkü etki alanı nesnelerinin bunlara enjekte edilmiş bağımlılıkları olmamalıdır.

Etki alanı nesneleri arabirimleri uygulamamalıdır - bu gereksiz bir soyutlamadır.

Diğer yandan hizmetler ve depo uygulamaları bağımlılıkları var ve DI konteyner tarafından oluşturulmalıdır.

+2

Tek kullanımlık bir prototip geliştirmek için tek başına çalışıyorsanız arayüzler aslında gereksiz bir soyutlamadır (evrimi beklemekte ve dolayısıyla test yapılmamaktadır). Farklı katmanlarda çalışan geniş bir ekip ekibinin bulunduğu karmaşık alanlarda, arayüzler, alanın değişikliklerinden sonra yeniden düzenlemelerin etkili bir şekilde paralelleştirilmesine izin verir. Dahası, arayüzler olmadan, uygun bir birim testi çok daha zor hale gelir. –

+2

Özellikle alan nesneleri için arayüzler sadece gereksiz bir soyutlama değil, zararlı bir soyutlamadır. Diğer yandan hizmetler veya depolar için arayüzler kesinlikle değerlidir. Ancak, tek başına test etmek için arayüzler bildirmek hoş bir alay çerçeve ile önlenebilir. Genel olarak, sadece soyutlama maliyetini vurgulamak istiyorum. Birincisi, bir soyutlama değerini, sonra maliyeti öğrenir. – eulerfx

+0

Çoğu durumda, tipik etki alanı nesnelerinin, bahsettiklerinizden başka arabirimlere gerek duymayacağını kabul ediyorum. Fakat her zaman olduğu gibi etki alanına bağlıdır :) Alanınızda birbirinin yerine geçebilecek (nesneler) nesnelere sahip nesneler varsa, o zaman faydalı olabilir veya hatta gerekli olabilir. Ama sanırım bir istisna olurdu. –