Karışıklıkta iki ana kavram vardır: bağlama ve yükleme. Ortada bir yerde olan ve her ikisini de yapan DataBinding kavramı ile karıştırılmaktadır. Bunu düşündükten sonra, trifecta'yı tamamlamak, dağıtmak için bir tane daha konsept ekleyeceğim.
Türleri
Geç Bağlanma : Değişken çalışma süresi boyunca kullanılıncaya kadar tip bilinmiyor ; genellikle atama yoluyla ancak bir türü zorlamanın başka yolları vardır; dinamik olarak yazılmış diller buna temel özellik olarak adlandırılır, ancak statik olarak yazılmış birçok dilde geç bağlama için bazı yöntemler vardır.
[Özel] dinamik türler, iç gözlem / yansıtma, bayraklar ve derleyici seçenekleri veya dinamik gönderimi ödünç alarak veya genişleterek sanal yöntemler kullanarak sık sık uygulanır
Erken Bağlanma : Değişken çalışma süresi boyunca, genellikle statik, bildirimsel araçlar yoluyla kullanılmadan önce tür bilinmektedir.
Genellikle standart ilkel türler kullanılarak uygulanır
Fonksiyonlar
Statik Sevkiyat : derleme zamanında bilinen, belirli bir fonksiyon veya alt yordam; belirsizdir ve imza ile eşleştirilir
Statik fonksiyonlar olarak uygulanır; hiçbir yöntem aynı imzayı alamaz
Dinamik Sevk : derleme zamanında belirli bir işlev veya alt yordam değil ; yürütme sırasında bağlam tarafından belirlenir. Uygun fonksiyon uygulamasını seçmek için hangi bağlamsal bilgilerin kullanıldığının ayırt edilmesiyle “dinamik gönderme” için iki farklı yaklaşım vardır.
İçinde tek [ dinamik ] sevk , örneğin tek tip uygun işlevi uygulama belirlemek için kullanılır. Statik olarak yazılmış dillerde, pratikte bunun anlamı, değişken tipi bildirildiğinde / atandığında belirtilen referans tipine bakılmaksızın, örnek tipinin hangi yöntem uygulamasının kullanıldığına karar vermesidir. Uygun bir uygulamayı elde etmek için yalnızca tek bir tür - nesne örneğinin türü - kullanıldığı için, bu yaklaşıma "tek gönderme" denir.
Ayrıca, giriş parametre türlerinin de hangi fonksiyon uygulamasının çağrılacağını belirlemeye yardımcı olduğu çoklu [ dinamik ] gönderim vardır . Çok tip için - örneğin type hem ve parametre (ler) in bir tip (ler) - etkisi seçildiği yöntem uygulaması, bu yaklaşım "çoklu gönderim" olarak adlandırılan bir.
Sanal veya soyut fonksiyonlar olarak uygulanır; diğer ipuçları, geçersiz kılınmış, gizli veya gölgeli yöntemleri içerir.
Not: Metod aşırı yüklenmesinin dinamik gönderimi içerip içermediği, dile özgüdür. Örneğin, Java'da aşırı yüklenmiş yöntemler statik olarak gönderilir.
Değerler
Tembel Yükleme : ihtiyaç duyulana kadar değer tahsisini savunan nesne başlatma stratejisi ; bir nesnenin esasen geçerli ancak bilerek eksik bir durumda olmasına ve verilerin yüklenmeden önce gerekli olana kadar beklemesine izin verir; genellikle büyük veri kümelerini yüklemek veya harici kaynakları beklemek için özellikle yararlı bulundu
Yapıcı veya başlatma çağrıları sırasında bir derleme veya listenin bir kompozit nesneye yüklenmemesi veya uygulama çağrıları sırasında aşağı doğru bir arayan kişi bu koleksiyonun içeriğini görmeyi isteyinceye kadar (ör. Get_value_at, get_all_as, vb.) Sık sık uygulanır. Varyasyonlar, koleksiyonla ilgili meta bilgileri (boyut veya anahtarlar gibi) yüklemeyi, ancak gerçek verileri atlamayı içerir; ayrıca, geliştiricilere oldukça güvenli ve verimli bir tekil uygulama programı sağlamak için bazı çalışma sürelerine bir mekanizma sağlar
İstekli Yükleme : Geçerli bir durumda olduğunu düşünmeden önce gerekli olan tüm verilerin eksiksiz olması için hemen tüm değer atamalarını gerçekleştiren nesne başlatma stratejisi .
Yapıcı çağrısı veya başlatma sırasındaki gibi, en kısa sürede bilinen tüm verileri içeren bir bileşik nesneler sağlayarak uygulanır
Veri Bağlama : genellikle iki uyumlu bilgi akışı arasında aktif bir bağlantı veya harita oluşturmayı içerir, böylece birindeki değişiklikler diğerine geri yansır ve bunun tersi de geçerlidir; Uyumlu olmaları için genellikle ortak bir temel tipe veya arayüze sahip olmaları gerekir.
Genellikle farklı uygulama yönleri arasında (örneğin, görüntülemek için görünüm modeli, denetleyiciye model, vb.) Daha temiz ve tutarlı bir senkronizasyon sağlama girişimi olarak uygulanmış ve kaynak ve hedef, uç noktalar, bağlama / ayırma, güncelleme ve benzeri olaylar hakkında konuşur on_bind, on_property_change, on_explicit, on_out_of_scope
DÜZENLEME NOT: Bunların sıkça meydana geldiğine dair örneklerin açıklamasını sağlamak için son ana düzenleme. Özel kod örnekleri tamamen uygulamaya / çalışma zamanına / platforma bağlıdır.