«dependency-injection» etiketlenmiş sorular

Bağımlılık Enjeksiyonu, bir bileşenin bağımlılıklarının (nesne örnekleri, özellikler) yapıcı (lar), yöntemler veya alanlar (özellikler) aracılığıyla ayarlandığı bir tasarım modelidir. Daha genel bağımlılık tersinin özel bir şeklidir.

2
Bağımlılık Enjeksiyonu ve Statik Yöntemler
Bugün bir dize ve çıkış dizesi kabul bir yöntemle bir sınıfa yaklaşmak hakkında başka bir geliştirici ile ilginç bir tartışma vardı. Tamamen örnek amaçlı yapılmış aşağıdaki gibi bir şey düşünün public string GetStringPart(string input) { //Some input validation which is removed for clarity if(input.Length > 5) return input.Substring(0,1); if(input.Substring(0,1) == …

5
Neredeyse herkesin ortak bir veri yapısına erişmesi gerektiğinde bağımlılık enjeksiyonunun faydaları nelerdir?
OOP'ta küresellerin kötü olmasının birçok nedeni var . Paylaşılması gereken nesnelerin sayısı veya boyutu işlev parametrelerinde verimli bir şekilde iletilemeyecek kadar büyükse, genellikle herkes global bir nesne yerine Bağımlılık Enjeksiyonu önerir . Ancak, neredeyse herkesin belirli bir veri yapısı hakkında bilgi sahibi olması durumunda, Bağımlılık Enjeksiyonu neden küresel bir nesneden …

2
“Dikiş” kelimesini anlama sorunu
Mark Seemann tarafından ".NET Bağımlılık Enjeksiyonu" okuyorum (harika ve olması gerekir) ve yazar genellikle "dikiş" kelimesini kullanır. Ama bunun ne anlama geldiğini anlayamıyorum. İşte bu kelimeyi kullanmanın bir örneği: Bölüm 7, ASP.NET MVC, WPF, WCF ve benzeri gibi çeşitli beton çerçevelerde nesnelerin nasıl oluşturulacağını açıklar. Tüm çerçeveler DI'yi eşit derecede …

2
Anemik alan modelleri ve alan hizmetleri enjeksiyonu
Anemik alan modeli Martin Fowler alan odaklı tasarım bir anti-desen olarak tarif edilmektedir. Etki alanı modellerinde iş mantığına sahip olmak için genellikle etki alanı hizmetleri kullanılır. Ancak, etki alanı hizmetlerinin etki alanı modellerine enjekte edilmesi Vaughn Vernon tarafından zararlı olarak kabul edilir (bkz. "Etki Alanına Dayalı Tasarımın Uygulanması, Sayfa 387). …

7
Soyutlamaların kod okunabilirliğini azaltması gerekiyor mu?
Birlikte çalıştığım iyi bir geliştirici, geçtiğimiz günlerde miras aldığımız bazı kodlarda bir özelliği uygulamada yaşadığı zorluklardan bahsetti; sorunun kodun takip edilmesinin zor olduğunu söyledi. Bundan sonra, ürüne daha derinlemesine baktım ve kod yolunu görmenin ne kadar zor olduğunu anladım. O kadar çok arayüz ve soyut katman kullandı ki, şeylerin nerede …

2
Bağımlılık enjeksiyonu kullanımının yazılım mühendisliğinde sonuçları artırdığına dair kanıt var mı?
Popülerliğine bakılmaksızın, Bağımlılık Enjeksiyonunun (ve / veya bir DI kabının kullanılmasının) örneğin hata sayısını azaltmaya, sürdürülebilirliği artırmaya veya gerçek hayattaki yazılım projelerinde geliştirme hızını artırmaya yardımcı olduğunu gösteren ampirik kanıtlar var mı?

1
Çerçeve yazarken Bağımlılık Enjeksiyonu / IoC kapsayıcı uygulamaları
.Net için çeşitli projelerde çeşitli IoC kapları (Castle.Windsor, Autofac, MEF, vb.) Kullandım. Sıklıkla istismar edildiklerini ve bir dizi kötü uygulamayı teşvik ettiklerini gördüm. IoC konteyneri kullanımı için, özellikle bir platform / çerçeve sağlarken belirlenmiş uygulamalar var mı? Çerçeve yazarı olarak amacım, kodu olabildiğince basit ve kullanımı kolay hale getirmektir. Ben …

8
Bağımlılık Enjeksiyonu UnitTesting dışında buna değer mi?
Asla, başlattığı çeşitli nesnelerin farklı uygulamalarını kullanmak zorunda kalmayacak bir yapıcı göz önüne alındığında, DI'yi kullanmak hala pratik mi? Sonuçta, yine de birim testi yapmak isteyebiliriz. Söz konusu sınıf yapıcısında birkaç sınıf daha başlatır ve kullandığı sınıflar oldukça belirgindir. Asla başka bir uygulama kullanmayacaktır. Bir arayüze program yapmaya çalışmaktan kaçınmamız …

5
Arayüzler ne zaman kullanılır (birim testi, IoC?)
Burada bir öğrenci hatası yaptığımı sanıyorum ve açıklama arıyorum. Benim çözüm (C #) sınıfların birçoğu - ben çoğunluk söylemeye cesaret - Ben karşılık gelen bir arayüz yazma sona erdi. Örneğin, bir "ICalculator" arayüzü ve onu uygulayan bir "Hesap Makinesi" sınıfı, bu hesap makinesini asla farklı bir uygulama ile değiştirmeme rağmen. …

2
DDD-Lite bağımlılık enjeksiyonu için bir kalıp dil ​​midir?
Greg Young'un konuşmasına tökezledim 7 Sebep DDD Projelerinin başarısız olmasının nedeni , DDD-Lite olarak 7:20 olarak adlandırdığı bir şeyden bahsediyor. Özetle, bazılarının DDD'yi DDD ile ilgili başka bir şey yapmadan kalıp dilleri (varlıklar, depolar, değer nesneleri, hizmetler vb.) Olarak kullandığını söylüyor. .Net'teki alan modellerinin% 60 veya daha fazlasını DDD-Lite olarak …

3
Beni IoC kaplarında sat, lütfen
Birkaç kod IoC kapları kullanmanızı tavsiye gördüm. Motivasyon basit. Aşağıdaki bağımlılık enjekte edilen kodu alın: class UnitUnderTest { std::auto_ptr<Dependency> d_; public: UnitUnderTest( std::auto_ptr<Dependency> d = std::auto_ptr<Dependency>(new ConcreteDependency) ) : d_(d) { } }; TEST(UnitUnderTest, Example) { std::auto_ptr<Dependency> dep(new MockDependency); UnitUnderTest uut(dep); //Test here } İçine: class UnitUnderTest { std::auto_ptr<Dependency> d_; …

4
Enjeksiyon bağımlılıkları ctorda mı yoksa yöntem başına mı yapılmalıdır?
Düşünmek: public class CtorInjectionExample { public CtorInjectionExample(ISomeRepository SomeRepositoryIn, IOtherRepository OtherRepositoryIn) { this._someRepository = SomeRepositoryIn; this._otherRepository = OtherRepositoryIn; } public void SomeMethod() { //use this._someRepository } public void OtherMethod() { //use this._otherRepository } } karşısında: public class MethodInjectionExample { public MethodInjectionExample() { } public void SomeMethod(ISomeRepository SomeRepositoryIn) { //use SomeRepositoryIn } …

5
C ++: Sınıf bağımlılıklarına sahip olmalı veya bağımlılıklarına dikkat etmeli mi?
Diyelim ki sınıfı Foobarkullanan (bağlı) bir sınıfım var Widget. İyi günlerde, polimorfik davranış gerekiyorsa Widgetwolud bir alan olarak Foobarveya belki de akıllı bir işaretçi olarak ilan edilir ve yapıcıda başlatılır: class Foobar { Widget widget; public: Foobar() : widget(blah blah blah) {} // or std::unique_ptr<Widget> widget; public: Foobar() : widget(std::make_unique<Widget>(blah …

4
Bağımlılık enjeksiyonunda “dairesel bağımlılık” nasıl ele alınır
Başlık "Dairesel Bağımlılık" diyor, ancak doğru ifade değil, çünkü bana göre tasarım sağlam görünüyor. Bununla birlikte, mavi parçaların dış ortaktan verildiği ve portakalın kendi uygulamam olduğu aşağıdaki senaryoyu düşünün. Aynı zamanda birden fazla olduğunu varsayalım ConcreteMain, ama belirli bir tane kullanmak istiyorum. (Gerçekte, her sınıfın biraz daha bağımlılıkları var, ama …

3
Bağımlılık enjeksiyonu alıyorum, ancak birisi IoC kapsayıcısına olan ihtiyacı anlamama yardımcı olabilir mi?
Sorunun başka bir tekrarı gibi görünüyorsa özür dilerim, ancak konuyla ilgili her makale bulduğumda çoğunlukla DI'nin ne olduğu hakkında konuşur. Bu yüzden DI alıyorum, ama herkesin girdiği bir IoC konteynerine olan ihtiyacı anlamaya çalışıyorum. Bir IoC konteynerinin amacı sadece bağımlılıkların somut uygulamasını "otomatik olarak çözmek" midir? Belki de sınıflarımın birkaç …

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.