Nasıl hardcoding olmadan Kek kalıbı ile bağımlılık enjeksiyon yapıyorsun?
Ben ve the Cake pattern article okuma zevk. Ancak, bence, bağımlılık enjeksiyon kullanmak için ana nedenlerinden biri, bileşenleri ya da XML dosyası veya komut satırı argümanları bir tarafından kullanılmakta değişiklik gösterebilir.
Nasıl DI o boy Kek kalıbı ile ele alınır? Gördüğüm örnekler statik karıştırma özellikleri içerir.
CEVAP
Özellikleri karıştırma eğer özellikleri bir nesneye karışık değişiklik istiyorsanız Scala statik olarak yapılır beri, farklı nesneleri bir koşul oluşturmak.
Kurallı kek kalıbı bir örnek alalım. Modülleri özellikleri olarak tanımlanan ve uygulama işlevselliği karışık bir sürü ile basit bir Nesne olarak inşa edilmiştir
val application =
new Object
extends Communications
with Parsing
with Persistence
with Logging
with ProductionDataSource
application.startup
Şimdi tüm bu modülleri güzel kendinden tür bildirimleri tanımlamak kendi inter-modül bağımlılıkları, yani bu hat sadece derler eğer tüm inter-modül bağımlılıkları var, benzersiz ve iyi yazılmış. Özellikle, Kalıcılık modül hiçbir şey Kalıcılık uygulama da veri Kaynağı, soyut bir modül özelliği uygulamak gerektiğini söylüyor kendi kendine türü vardır. ProductionDataSource Kaynağı devraldığı günden beri, her şey harika uygulama inşaat hattı derler.
Ama eğer farklı bir Kaynağı kullanmak isterseniz, test amaçlı bazı yerel veritabanı neye işaret? Sadece farklı bir yapılandırma parametreleri, bazı özellikleri ile yüklenen ProductionDataSource dosyasını yeniden kullanabilirsiniz. ayrıca varsayalım. Bu durumda ne yapacağını Kaynağı genişleten yeni bir özellik TestDataSource tanımlamak ve onun yerine karışımıdır. Dinamik bir komut satırı bayrak dayanarak bu kadar yapabilirdim.
val application = if (test)
new Object
extends Communications
with Parsing
with Persistence
with Logging
with TestDataSource
else
new Object
extends Communications
with Parsing
with Persistence
with Logging
with ProductionDataSource
application.startup
Şimdi bu özellikle eğer uygulamanız birden çok eksende yapısı değişir gerekiyorsa gibi, biz biraz daha fazla ayrıntılı görünüyor. İyi tarafından bak, genellikle sadece bir kısmını koşullu inşaat mantık böyle bir uygulama (veya en kötü ihtimalle bir kez başına tanımlanabilir bileşen ömrü), en azından acı küçültülmüş ve çitlerle kapatılmış kalanını sizin mantık.

Nasıl Bağımlılık yapıcı Enjeksiyon del...
Nasıl Python betiği tek başına HERHANG...
Nasıl başa NodeJS ya ...bağımlılık enj...
Nasıl Bağımlılık Enjeksiyon ile log4ne...
Nasıl "Bağımlılık Enjeksiyon"...