Bağımlılık enjeksiyon düzeni neden dörtlü çeteye dahil edilmedi ? GOF, tarih öncesi yaygın otomatik testlerden geçti mi? Bağımlılık enjeksiyonu şimdi çekirdek bir model olarak mı kabul edilir?
Bağımlılık enjeksiyon düzeni neden dörtlü çeteye dahil edilmedi ? GOF, tarih öncesi yaygın otomatik testlerden geçti mi? Bağımlılık enjeksiyonu şimdi çekirdek bir model olarak mı kabul edilir?
Yanıtlar:
Ben editörü oldu Yazılım Geliştirme Dört kitabın Gang çıktı ve ben birim test 1994 yılında yaygın bir uygulama olmadığını toplam güvenle, söyleyebiliriz zaman dergisi Tasarımı Kalıpları aslen yayınlandı.
1994 yılında, C ++ en çok kullanılan nesne yönelimli dildi ve programlayan çoğu kişi bir C arkaplanından geliyordu. İnsanların basitçe sahip olmadığı "nesnelerde düşünmek" şeylerinden biri, programınıza yüzlerce veya binlerce giriş noktası fikridir. Hakkında düşündün main()
. Büyük bir projede çalıştıysanız, modül tabanlı bir program oluşturmak için bir (genellikle oldukça ayrıntılı) bir makefile olabilir. Ama "birim testi"? Bir işlem başlatmak, gerekli bellek bağlamını oluşturmak, yürütmek ve yıkmak için her bir yöntem temelinde? Bu çok radikaldi.
Java çoklu giriş noktası programlamasını daha belirgin hale getirdi. Orijinal Dot-Com patlaması döneminde, birim testi iyi bilinen bir teknikti, ancak ateş yakmasına ve evrensel bir pratik olmasına neden olan gerçekten JUnit'ti (yaklaşık 2001?).
Her ne kadar Strateji ve bir arayüze yönelik genel programlama kavramı GoF'un ve 90'ların ortalarındaki zeitgeist'in bir parçası olsa da, enjeksiyon fikri partiye oldukça geç geldi ('03-05?). Açıkçası, gri saçlarım DI'nin bu yönüyle ilgili hala oldukça şüpheli ("Çimenimden çık, lanet yapılandırma dosyaları!").
Buna Strateji dediler .
Stratejileri, karmaşık sondaj adı olmadan bağımlılık enjeksiyonunun tüm özelliklerine sahip görünüyor.
Bağımlılık Enjeksiyonunun katmanlardaki uygulamayı ayırırken daha alakalı olduğunu düşünüyorum. Bağımlılık enjeksiyonunu düşündüğümüz bir diğer alan ise birim testleridir. Ve tarih öncesi öneriniz doğru görünüyor. Eğer çete 2012'de kalıpları toplayacak ve ayıracaksa, kesinlikle bağımlılık enjeksiyonu orada olacak.
Strateji tartışmalarda ortaya çıkabilir ancak Strateji bağımlılık enjeksiyonundan bahsetmez. Ancak, strateji modelini tek bir projede veya dll'de kullanırken (tüm sınıflar ve arayüzler tek bir projede kalır), bağımlılık enjeksiyonunu yaptığımız anlaşılıyor. Aslında değiliz.
Şimdi, strateji modelinde belirtilen sınıflar ve arayüzler farklı projelerde veya kademelerde ayrılırsa, bağımlılık enjeksiyon tekniklerini kullanmak zorunda kalacağız. Birlik yapılandırma dosyalarını kullanabiliriz (çalışma zamanı değişikliği olsa bile mümkün değildir). Ancak, Strateji modeli bir bağımlılığın nasıl enjekte edileceğini söylemez.
Bağımlılık enjeksiyonuna yakından benzeyen bir kalıp varsa, Özet Fabrika Yöntemi kalıbıdır. Bu model bağımlılığı enjekte etmek için bir strateji modelinde kullanılabilir.
Cevap Stratejisi% 100 doğru. Oy kullandım ancak yorum yapabilir.
“Strateji, algoritmanın onu kullanan müşterilerden bağımsız olarak farklılık göstermesine izin veriyor. [1] Strateji, Gamma ve arkadaşlarının, yazılım tasarımını tanımlamak için kalıpları kullanma kavramını popülerleştiren etkili Tasarım Dizileri'nde yer alan kalıplarından biridir.”
Bir tasarım deseni kullanımına bağlı değildir. Bağımlılık Enjeksiyonu, Strateji kalıbı kullanılarak gerçekleştirilir. Her bir kalıbı kullanım durumuna göre adlandırırsak, birçok kalıbı yeniden adlandırmamız gerekir.
Depo deseni yeni bir şablon değil, Şablon Şablonu.
"Bu tasarım modelinin şablon yönteminde, bir veya daha fazla algoritma aşaması, farklı davranışlara izin vermek için alt sınıflar tarafından geçersiz kılınabilir ve aynı zamanda genel algoritmanın hala takip edilmesini sağlar."
Çoğunlukla, desenler, birleştirilmiş ve MVC modeli gibi adlandırılmış birden fazla desendir.
GOF, kullanılmış Soyut Soyut sınıfları ara yüzlere sahip değildi ve ayrıca C ++ 'nın birden fazla sınıftan miras alma yeteneğinden de faydalandı.