SORU
2 Mart 2011, ÇARŞAMBA


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
2 Mart 2011, ÇARŞAMBA


Ö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.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • kruno j

    kruno j

    6 Mayıs 2007
  • pissengehen

    pissengehen

    26 EYLÜL 2006
  • ThePointblank

    ThePointblan

    18 Aralık 2006