SORU
25 EYLÜL 2008, PERŞEMBE


Bağımlılık enjeksiyon konteyner faydaları nelerdir?

Bağımlılık enjeksiyon faydalar anlıyorum. Hadi mesela Bahar. Ben de featureslike olanlar çokta farklı türde, vb Bahar faydaları anlamak. Sadece, ne XML faydaları olarak yapılandırma gibi merak ediyorum

<bean id="Mary" class="foo.bar.Female">
  <property name="age" value="23"/>
</bean>
<bean id="John" class="foo.bar.Male">
  <property name="girlfriend" ref="Mary"/>
</bean>

düz eski java kodu gibi göre:

Female mary = new Female();
mary.setAge(23);
Male john = new Male();
john.setGirlfriend(mary);

daha kolay debug, zaman kontrol derlemek ve java bilen herkes tarafından anlaşılabilir. Bağımlılık enjeksiyon çerçeve temel amacı nedir? (ya da yararlarını gösteren bir kod parçası.)

< / ^ hr .

GÜNCELLEME:

IService myService;// ...
public void doSomething() {  
  myService.fetchData();
}

Nasıl IoC çerçeve eğer birden fazla ise orada enjekte olmak istiyorum hangi tahmin edebilir? Arayüzü verilen tek bir uygulama var, ve IoC konteyner otomatik olarak kullanmaya karar verirsem ikinci bir uygulama göründükten sonra kopar. Ve eğer kasıtlı olarak bir arabirim sadece olası bir uygulama ise o zaman orada enjekte etmen gerekmez.

Gerçekten ilginç faydaları olduğunu gösteren IoC için yapılandırma Küçük Parça görmek olurdu. Bir süre Bahar kullanıyorum ve böyle bir örnek sağlayamaz. Ve kullandığınız hazırda, dwr ve diğer çerçeveler faydaları gösteren tek satır gösterebilirim.

< / ^ hr .

GÜNCELLEME 2:

< / ^ hr .

GÜNCELLEME 3:

Arayüzleri ve beton uygulamaları arasında eşleme dış yapılandırma

Bu extenal yapımında çok iyi nedir? Kesinlikle - classname.java.txt bunun yerine dosya ve el ile sinek okuma derleme ise tüm kod harici olun, değilsin - Vay be, yeniden kaçtın. Neden derleme kaçınılmalıdır?!

Eşleştirmeleri hazırlanmasına, usule ilişkin bir kod değil, sizin tarafınızdan çünkü zaman kodlama kaydedin

Bazen Bildirge yaklaşım zaman kazandırır anlıyorum. Örneğin, fasulye emlak ve DB sütun ve hazırda bekleme arasında bir eşleme yükleme, kaydetme, bina SQL tutmak için kullanılır, vb dayalı iken bu eşleme kullanır sadece bir kez ilan ediyorum. Bu açıklayıcı yaklaşım burada çalışıyor. Bahar (benim örnekte), beyan fazla sıra vardı ve karşılık gelen kodu aynı ifade vardı. Eğer böyle bir beyanı kodu daha kısa olduğu bir örnek varsa - onu görmek istiyorum.

Kontrol ilkesine ters kolay birim sahte olanlar (bellek içi bir SQL veritabanı değiştirme gibi) ile gerçek uygulamaları değiştirebilirsiniz, çünkü test etmek için izin verir

Anlıyorum inversion kontrol faydaları (sana bip tasarım desen tartışıldığı gibi Bağımlılık Enjeksiyon, çünkü IoC daha genel - pek çok çeşit kontrol ve biz eviren sadece birini kontrol başlatma). Birisi hiç bir şey için bir programlama dili dışında neden ihtiyaç duyduğunu sordum. Ben kesinlikle sahte olanları kodu kullanarak gerçek uygulamaları değiştirebilirsiniz. Ve bu kod yapılandırma - sadece sahte değerleri ile alanları başlatılamıyor olarak aynı şeyi ifade eder.

mary = new FakeFemale();

Dİ faydaları anlıyorum. Aynı işi yapar bu yapılandırma koduna göre dış XML yapılandırma tarafından eklenen ne anlamıyorum. Derleme Kaçınılması gerektiğini düşünmüyorum - ben her gün derlemek ve hala hayattayım. Dİ yapılandırma açıklayıcı yaklaşımın kötü örnek olduğunu düşünüyorum. Beyan yararlı olabilir eğer ilan edildi VE bir kez kullanılan birçok kez farklı şekillerde gibi hazırda cfg, nerede eşleme arasında fasulye emlak ve DB sütun için kullanılır kaydetme, yükleme, binada arama sorguları, vb. Bahar Dİ yapılandırma kolaylıkla bu sorunun başlangıcı gibi yapılandırma koduna tercüme edilebilir, değil mi? Ve fasulye başlatma için kullanılır, değil mi? Hangi açıklayıcı bir yaklaşım, burada bir şey eklemek anlamına gelir, değil mi?

Hazırda eşleme ilan ediyorum, ben sadece Hazırda Beklet biraz bilgi ver, ve o inşaat temel - ne yapacağını söyle. Bahar, benim ifadem bahar tam olarak stopaj yapmak - neden herkes öyle diyor diye, neden olmasın?

< / ^ hr .

SON GÜNCELLEME:

CEVAP
8 EKİM 2008, ÇARŞAMBA


Kendim için bir IoC kullanmak için ana nedenlerinden biri (ve dış yapılandırma kullanın) yaklaşık iki alan vardır:

  • Test
  • Üretim bakım

Test

3 senaryolar büyük ölçekli gelişimi oldukça normal olan) içine test bölmek:

  1. Birim testi
  2. Entegrasyon test
  3. Kara kutu test

Yapmak isteyeceğiniz son iki test senaryoları (Entegrasyon & Kara kutu), bu uygulamanın herhangi bir bölümünü yeniden derleyin değil.

Eğer herhangi bir test senaryoları gerektirir değiştirmek için yapılandırma (örn: kullanım başka bir bileşen için taklit bir bankacılık entegrasyonu, yoksa bir performans yük), bu kolayca ele (bu mu gel altında faydaları yapılandırma Dİ yan bir IoC rağmen.

Ayrıca eğer uygulama ya da birden fazla siteleri (farklı sunucu ve bileşen yapılandırma) ya da bir değiştirme yapılandırma üzerinde canlı ortamı kullanabilirsiniz sonraki aşamalarında test olduğunu doğrulamak için uygulama kolu olacak bu değişiklikler.

Üretim

Bir geliştirici değilsin (ve olmamalıdır) kontrol üretim ortamı (özel zaman uygulaması olarak dağıtılmış birden fazla müşteri ya da ayrı site), bu benim için gerçek fayda kullanarak hem bir IoC ve dış yapılandırma, bu kadar altyapı/üretim destek için çimdik ve ayarlayın, canlı ortam zorunda kalmadan geri dönmek için geliştiriciler ve test (yüksek maliyet zaman tüm istediklerini yapmak hareket bileşeni).

Özet

Bir IoC dış yapılandırma Diğerleri (non-geliştiriciler) veren uygulamanızı yapılandırmak için güç gelen en önemli avantajları, benim durumumda bu durumlar sınırlı sayıda altında sadece yararlıdır:

  • Uygulama ortamları burada farklı birden çok site/müşterilere dağıtılır.
  • Sınırlı üretim geliştirme ortamı ve kur üzerinden/giriş kontrol.
  • Test senaryoları.

Uygulama buldum o zaman bile gelişen bir şey var mı kontrol ortamı olacak çalışma, zamanla daha iyidir ver başkası özelliklerini değiştirmek için yapılandırma:

  • Ne zaman değişeceğine (app şirketiniz başkasına satıyor çok yararlıdır) bilmiyorsun geliştirirken.
  • Ve iyi yapılandırılmış bir model kurma kullanılarak işlenen her seferinde ufak bir değişiklik istenen kodu değiştirme ile sıkışmış olmak istemiyorum.

Not: Uygulama, uygulamayı çalıştırmak için gerekli dosyaları tüm Tam Çözüm (sadece çalıştırılabilir), ifade eder.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Bart Baker

    Bart Baker

    1 Aralık 2006
  • megablueblaster

    megablueblas

    23 HAZİRAN 2006
  • Truc Minh

    Truc Minh

    23 Ocak 2011