Vzor vlastností vazby - Binding properties pattern - Wikipedia
![]() | tento článek možná matoucí nebo nejasné čtenářům.Květen 2017) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
The Vzor vlastností vazby kombinuje více pozorovatelé vynutit, aby byly vlastnosti v různých objektech nějakým způsobem synchronizovány nebo koordinovány. Tento vzor byl poprvé popsán jako technika Victor Porton.[1][2] Tento vzor spadá souběžnost vzory.
Srovnání s aspektově orientovanou implementací
Jako alternativu k aspektově orientované implementaci vzájemných vlastností lze navrhnout vazbu na vlastnost. V knihovně LibPropC ++ C ++ je také implementována.[3]
Některé slabosti v LibPropC ++ (s vazbou vlastnosti):
- Jeho použití není transparentní, protože vyžaduje, aby byly deklarovány nezbytné atributy objektu, protože musí být poskytnuty vlastnosti a vhodné metody přístupového modulu
- Vazba atributů v LibPropC ++ není určena k nahrazení volání metod
- Knihovna neudržuje historii interakcí.[3]
Implementace
Existují dva typy vazby. Jednosměrná vazba by měla být použita, když je jedna z vlastností jen pro čtení. V ostatních případech musí být použita obousměrná vazba.[2][3]
Nekonečné smyčky lze eliminovat blokováním signálu nebo porovnáním přiřazené hodnoty s hodnotou vlastnosti před přiřazením nebo vyloučením zbytečných přiřazení.[2][3]
Vazební vlastnosti různých typů lze dosáhnout prostřednictvím Zadejte převody.[2][3]
Vlastnosti vazby s transformacemi lze dosáhnout redukcí transformační funkce na problém vlastností vazby a tato funkce může být imaginární považována za převody typů.[2][3]
Výsledný kontext
Vlastnosti jsou automaticky synchronizovány. Mezi voláními knihovny mají vždy hodnoty vyjádřené EqualityConstraints.[3]
Nedostatky
Mechanismus sledování změn vlastností získává některé zdroje.[3]
Ukázkový kód
Náčrt kódu pro jednosměrnou vazbu může vypadat takto:
bind_multiple_one_way(src_obj, src_prop, dst_objs[], dst_props[]){ pro (i, j) v (dst_objs, dst_props) { bind_properties_one_way(src_obj, src_prop, i, j); }}
Obousměrná vazba může být vyjádřena následovně (v C ++):
// V tomto pseudokódu nejsou brány do přiřazení počátečních hodnot účtubind_two_way(prop1, prop2){ svázat(prop1, prop2); svázat(prop2, prop1);}
Dokončení vazby (tj. Připojení oznámení o změně vlastnosti v obslužné rutině události) může vypadat takto:
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);}
Viz také
Reference
- ^ "Vlastnosti vazby". Cunningham a Cunningham. Cunningham a Cunningham. Citováno 4. února 2015.
- ^ A b C d E F G Porton, V. "Spojení vlastností objektů: software Extreme Code". Ex-kód. Ex-kód. Archivovány od originál dne 20. června 2017. Citováno 1. září 2008.
- ^ A b C d E F G h i j Evermann, J., Asociační konstrukt v koncepčním modelování - analýza s využitím Bungeho ontologického modelu, Wellington, Nový Zéland: School of Information Management, Victoria University