SORU
13 EKİM 2009, Salı


'Bağımlılık Enjeksiyon arasındaki fark ne ve Servis Bulucu desen?

Hem desenleri kontrol çevirme ilkesinin bir uygulama gibi görünüyor. Nesne bağımlılıkları oluşturmak için nasıl bilmek gerekir.

Bağımlılık Enjeksiyon (DI) bir kurucu kullanmak gibi görünüyor ya da ayarlayıcı" bağımlılıklar. "enjekte

Yapıcı Enjeksiyon kullanmaya örnek:

//Foo Needs an IBar
public class Foo
{
  private IBar bar;

  public Foo(IBar bar)
  {
    this.bar = bar;
  }

  //...
}

Servis yer Bulucu kullanmak gibi görünüyor "konteyner kadar bağımlılıklarından teller ve foo. bar verir.",

Konumlandırıcı Hizmeti kullanmaya örnek:

//Foo Needs an IBar
public class Foo
{
  private IBar bar;

  public Foo()
  {
    this.bar = Container.Get<IBar>();
  }

  //...
}

Bizim bağımlılıkları sadece nesneler kendilerini çünkü, bu bağımlılıkları daha da bağımlılıkları olan bağımlılıkları, ve benzeri ve benzeri. Bu nedenle, Kontrol Kabı (veya Dİ Containor) Ters doğdu. Örnekler: Castle Windsor, Ninject, Yapı Harita, Bahar, vb.)

Ama IOC/DI bir kaba görünüyortam olarakKonumlandırıcı Hizmeti gibi. Bu Dİ Containor bir çağrı kötü bir isim mi? IOC/DI bir Konteyner sadece başka bir şeydiryazınServis Bulucu? Çoğunlukla birçok Bağımlılıkları varken Dİ Kaplar kullanıyoruz aslında nüans?

CEVAP
13 EKİM 2009, Salı


Fark küçük gibi görünebilir, ama ServiceLocator bile, sınıf hala bağımlılıkları oluşturmak için sorumludur. Sadece servis Bulucu yapmak için kullanır. Dİ, sınıf bağımlılıkları o verilir. O biliyor ne de nereden geldiğini umursamıyor. Bu önemli bir neden Dİ bu örnek çok daha kolay bağımlı nesnelerin alay uygulamaları iletebilirsiniz çünkü test -- birim olmasıdır. Eğer istersen iki ... ... birleştirmek ve hizmet konum belirleyicisi (ya da bir fabrika) enjekte edebilirsin.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • hanksranger

    hanksranger

    6 EKİM 2009
  • UlyssesForever's channel

    UlyssesForev

    28 ŞUBAT 2012
  • William Sledd

    William Sled

    24 EYLÜL 2006