Daha büyük bir projede IoC ilkelerini kullanmaya karar verdim. Ancak, uzun zamandır beni rahatsız eden düz bir şey almak istiyorum. Benim ortaya koyduğum sonuç, bir IoC konteynerinin bir tasarım deseni değil, mimari bir model olması. Başka bir deyişle, hiçbir sınıf kendi varlığından haberdar olmamalıdır ve tüm bileşenleri dikmek için uygulama katmanında kapın kendisi kullanılmalıdır. Esasen, iyi tasarlanmış bir nesne yönelimli modelin üzerinde bir seçenek haline gelir. Bunu söyledikten sonra, IoC konteynerleri her yere serpilmeden (soyutlanıp çizilmediğine bakılmaksızın) çözümlenmiş türlere nasıl erişilebileceği belirtildi mi? Burada gördüğüm tek seçenek, beton tiplerini çözmek için IoC konteynerini kullanan soyut fabrikaları kullanmaktır. Bu, bir dizi standart fabrika için değiş tokuş etmek için yeterince kolay olmalıdır. Bu iyi bir yaklaşım mı? Burada kimse var ve sizin için ne kadar iyi çalıştı? Başka bir şey var mı?IoC üstüne soyut fabrika düzeni?
Teşekkürler!
Sanırım neredeyse oradayım. Burada benimle kal :) Diyelim ki sınıf Apple tarafından uygulanan IFruit arayüzüne sahibim. Bu beton türünü kaydettikten sonra, bir Windows Formunda düğme tıklama olayımda kullanmak istiyorum. Düğme olayından IoC konteynerine açıkça erişmeden nasıl sınıf Apple'a ulaşabilirim? –
Bu, uygulamanıza göre birçok IFruit örneği var mı? Eğer sadece bir tane varsa, düğmeye tıklama işleyicisi ile daha önceden sınıfa enjekte edilmelidir. Çok fazla varsa, büyük olasılıkla diğer çalışma zamanı değerlerinden bir IFruit örneği oluşturabilen bir IFruitFactory'ye ihtiyacınız olacaktır. İkinci durumda, IFruitFactory enjekte bağımlılık olacaktır. –
Yalnızca bir IFruit örneğinin varlığını göz önünde bulundurarak, düğme sınıfı olayıyla Form sınıfına enjekte edildiğini görebilmemin tek yolu, IFruit arabirimini içerecek şekilde form yapıcısını değiştirirsem ve sonra kurucuyu gerçekleştirmek için Formu kendisinin IoC konteynerine kaydettirmekti enjeksiyon. Bu doğru mu? Yardımın için teşekkürler! –