IoC ve Rich Domain kullanmak mümkün mü? Herhangi bir iyi örnek, bunu yapan açık kaynaklı projeler var mı?
Sanırım IoC yerine DI demek istiyorsun ve üzerinde çalıştığın proje Spring gibi bir DI kap kullanıyor. IoC'nin iki ana lezzeti vardır: DI ve Konumlandırıcı modeli. Konumlandırıcı modelinin neden bir sorun olması gerektiğini anlamıyorum, o zaman DI'ye odaklanalım.
Bunun mümkün olduğunu sanmıyorum, ya da en azından çok pratik olacağını düşünüyorum. DI kaplarının ana yönü, başkalarına enjekte ettikleri zaman nesnelerin oluşumunu kontrol etmeleridir ("yönetilen nesneler"). Projeler çalışırken canlı olan yönetilen nesne kümesi, projenizde hangi etki alanı öğelerinin bulunduğundan bağımsızdır, ancak nesnelerin nasıl kablolandığına ve bunlara hangi kapsamların (tekil, prototip) atandığına bağlıdır.
Bu nedenle DI konteynerinin etki alanı nesnelerinizi yönetmesine izin vermek istemezsiniz. Ancak, nesneleri manuel olarak (yeni) oluşturursanız, etki alanı nesnelerinize enjekte edilen diğer nesneleri alamazsınız. (Potansiyel çalışma ortamını manuel kablolama ile bir kenara bırakın.) Uygulamaları diğerleriyle değiştirmek için bu enjeksiyonlara ihtiyacınız olduğundan, DI kullanarak zengin alan nesnelerinin işlevselliğini değiştiremezsiniz. Bu nedenle, işlevselliği etki alanı nesnelerine yerleştirmek istemeyeceksiniz veya DI'nin özelliklerini kaybedeceksiniz.
Nesnelerinizi yönetmeyen varsayımsal bir DI kapsayıcısının nasıl çalıştığını göremiyorum ve mevcut uygulamaların hiçbiri buna izin vermiyor. Bu yüzden DI'nin nesneleri yönetmeye dayandığını iddia etmek doğru olur. Bu nedenle, potansiyel Rich Domain nesnelerini bir anemik sınıfa ve bir veya birkaç işlem betiği sınıfına ayırmanız her zaman için sizi teşvik edecektir.