Bağlanma özellikleri modeli - Binding properties pattern - Wikipedia

Bağlanma özellikleri modeli birden çok gözlemciler farklı nesnelerdeki özelliklerin bir şekilde senkronize edilmesine veya koordine edilmesine zorlamak. Bu Desen ilk olarak Victor Porton tarafından bir teknik olarak tanımlanmıştır.[1][2] Bu model altına geliyor eşzamanlılık kalıpları.

Görünüm odaklı uygulama ile karşılaştırma

Karşılıklı özelliklerin görünüm odaklı uygulanmasına bir alternatif olarak, mülkiyet bağlama önerilebilir. LibPropC ++ C ++ kütüphanesinde de uygulanmaktadır.[3]

LibPropC ++ 'daki bazı zayıflıklar (özellik bağlamayla):

  1. Özellikler olarak gerekli nesne özniteliklerinin bildirilmesini gerektirdiğinden ve uygun erişimci yöntemlerinin sağlanması gerektiğinden kullanımı şeffaf değildir.
  2. LibPropC ++ 'da özniteliklerin bağlanması, yöntem çağrılarının yerini alacak şekilde tasarlanmamıştır.
  3. Kütüphane bir etkileşim geçmişi tutmaz.[3]

Uygulama

İki tür bağlama vardır. Özelliklerden biri salt okunur olduğunda tek yönlü bağlama uygulanmalıdır. Diğer durumlarda, iki yönlü ciltleme uygulanmalıdır.[2][3]

Sonsuz döngüler, sinyali bloke ederek veya atanan değeri atamadan önce özellik değeri ile karşılaştırarak veya gereksiz atamaları ortadan kaldırarak ortadan kaldırılabilir.[2][3]

Farklı türlerin bağlanma özellikleri sayesinde elde edilebilir Tür Dönüşümleri.[2][3]

Dönüşümlerle bağlanma özellikleri, dönüştürme işlevini bağlama özellikleri sorununa indirgeyerek elde edilebilir ve işlev, Tip Dönüşümleri olarak düşünülebilir.[2][3]

Prosedürel programlama
Nesne yönelimli programlama
Sinyaller / olay programlama
Özellikleri olan bileşenler
özellikleri birbirine bağlama

[2]

Ortaya çıkan bağlam

Özellikler otomatik olarak senkronize tutuluyor. Kütüphane çağrıları arasında her zaman EqualityConstraints tarafından ifade edilen değerlere sahiptirler.[3]

Eksiklikler

Mülkiyet değişikliklerini izleme mekanizması bazı kaynakları elde eder.[3]

Basit kod

Tek yönlü bağlama için kod taslağı aşağıdaki gibi görünebilir:

bind_multiple_one_way(src_obj, src_prop, dst_objs[], dst_props[]){  için (ben, j) içinde (dst_objs, dst_props)  {    bind_properties_one_way(src_obj, src_prop, ben, j);  }}

[2]

İki yönlü bağlama aşağıdaki gibi ifade edilebilir (C ++ 'da):

// Bu sözde kodda, hesabın başlangıç ​​değerleri atamaları dikkate alınmazbind_two_way(prop1, prop2){  bağlamak(prop1, prop2);  bağlamak(prop2, prop1);}

[3]

Bağlamayı gerçekleştirmek (yani bir olay işleyicide özellik değişikliği bildirimini bağlamak) aşağıdaki gibi olabilir:

on_property_change(src_prop, dst_prop){  block_signal(src_obj, on_property_change);  dst_prop := src_prop;  unblock_signal(src_obj, on_property_change);}

[3]

Ayrıca bakınız

Referanslar

  1. ^ "Bağlama Özellikleri". Cunningham ve Cunningham. Cunningham ve Cunningham. Alındı 4 Şubat 2015.
  2. ^ a b c d e f g Porton, V. "Nesnelerin Özelliklerini Birbirine Bağlama: Extreme Code Software". Eski kod. Eski kod. Arşivlenen orijinal 20 Haziran 2017 tarihinde. Alındı 1 Eylül 2008.
  3. ^ a b c d e f g h ben j Evermann, J., Kavramsal Modellemede İlişkilendirme Yapısı - Bunge Ontolojik Modeli Kullanan Bir Analiz, Wellington, Yeni Zelanda: School of Information Management, Victoria University