Yaklaşık 7 parametre gerektiren CSV dosya işleminden içe aktarılan ürünler için bir sınıfım var. Bu, ithalatçı için kesinlikle gerekli olan bir bilgidir.Yapıcı tabanlı ve ayarlayıcı tabanlı enjeksiyonları kötü bir şey karıştırıyor mu?
Bu parametrelerin hepsi aynı yaşam süresine sahiptir. Sonunda bir Immutable Object olmalı.
Okunabilirlik üzerindeki etkisi nedeniyle hepsini kurucuda listelemek için çok korktum ve 3'ü setter enjeksiyonu yapmaya karar verdim. Ama açıkçası bu zarif bir çözüm değil.
Sorular:
1) yapıcı tabanlı ve ayarlayıcı tabanlı enjeksiyonları kötü uygulama karıştırma mı?
2) Bu sorun nasıl çözülebilir?
Martin Fowler tarafından yapılan "Parametre Nesnesini Tanıt" ın uygulanmasını düşünüyordum, ancak bununla ilgili bir sorun var.
4 Parametreler çok kolay bir şekilde Parametre nesnesine taşınır (customerId, projectId, languageId vb.) - tüm tamsayılar.
Diğer 3 parametre enjekte ettiğim bir nesnedir (Mock birim testleri için gereklidir).
Bu, DI kabınıza bağlı olacaktır ... bazıları bunu diğerlerinden daha kolay hale getirir. – skaffman
@skaffmann: Kesinlikle katılmıyorum. DI kalıplarının kullanılması DI Container'ın seçimi ile belirlenmemelidir - konteyner sizi kısıtlamak için size yardımcı olmak üzere oradadır. –
@Nikita - neden tam parametre nesnesini tanıtmıyorsunuz ve atasözlerinizi parametreye enjekte etmiyorsunuz? –