바인딩 속성 패턴

Binding properties pattern

바인딩 속성 패턴은 여러 관찰자를 결합하여 여러 개체의 속성을 강제로 동기화하거나 조정하는 것입니다. 패턴은 처음에 Victor Porton에 [1][2]의해 기술되었습니다.이 패턴은 동시성 패턴에 속합니다.

애스펙트 지향 구현과의 비교

상호재산의 측면지향적 실시의 대안으로 재산 구속력을 제안할 수 있다.LibPropC++ C++ 라이브러리에서도 [3]구현됩니다.

LibPropC++(속성 바인딩 포함)에는 다음과 같은 약점이 있습니다.

  1. 속성 및 적절한 접근자 메서드를 제공해야 하므로 필요한 개체 속성을 선언해야 하므로 이 사용은 투명하지 않습니다.
  2. LibPropC++ 속성의 바인딩은 메서드 호출을 대체하도록 설계되지 않았습니다.
  3. 라이브러리는 상호 작용 [3]기록을 유지하지 않습니다.

실행

바인딩에는 두 가지 유형이 있습니다.속성 중 하나가 읽기 전용인 경우 단방향 바인딩을 적용해야 합니다.그 이외의 경우에는 쌍방향 바인딩을 [2][3]적용해야 합니다.

무한 루프는 신호를 차단하거나 할당 전에 할당된 값을 속성 값과 비교하거나 불필요한 [2][3]할당을 제거함으로써 제거할 수 있습니다.

유형 [2][3]변환을 통해 다른 유형의 바인딩 속성을 얻을 수 있습니다.

변환에 의한 바인딩 특성은 변환 함수를 바인딩 속성 문제로 축소함으로써 달성될 수 있으며, 함수는 유형 [2][3]변환이라고 가정할 수 있습니다.

프로시저
객체 지향 프로그래밍
신호/이벤트 프로그래밍
속성이 있는 컴포넌트
결합 특성

[2]

결과 컨텍스트

속성은 자동으로 동기화된 상태로 유지됩니다.라이브러리 호출 간에는 항상 EqualConstraints에 [3]의해 표현되는 값이 있습니다.

결점

속성 변경 감시 메커니즘이 일부 리소스를 [3]획득합니다.

샘플 코드

단방향 바인딩의 코드 스케치는 다음과 같습니다.

bind_find_oneway(src_obj, src_prop, dst_objs[], dst_displays(dst_displays)[]) {   위해서 (i, j)  (dst_objs, dst_displays(dst_displays))   {     bind_properties_one_way(src_obj, src_prop, i, j);   } } 

[2]

쌍방향 바인딩은 다음과 같이 나타낼 수 있습니다(C++).

// 이 유사 코드에서는 계정 초기 값 할당에 포함되지 않습니다. bind_two_way(소품 1, 프로펠러 2) {   묶다(소품 1, 프로펠러 2);   묶다(프로펠러 2, 소품 1); } 

[3]

바인딩(즉, 이벤트 핸들러에서 속성 변경 알림 연결)을 수행하는 방법은 다음과 같습니다.

on_filen_change(src_prop, dst_prop) {   block_displays(블록)_displays(실행)(src_obj, on_filen_change);   dst_prop := src_prop;   차단 해제(src_obj, on_filen_change); } 

[3]

「 」를 참조해 주세요.

레퍼런스

  1. ^ "Binding Properties". Cunningham & Cunningham. Cunningham & Cunningham. Retrieved 4 February 2015.
  2. ^ a b c d e f g Porton, V. "Binding together Properties of Objects". Victor Porton. Retrieved 25 February 2021.
  3. ^ a b c d e f g h i j Evermann, J., The Association Construct in Conceptual Modelling - An Analysis Using the Bunge Ontological Model, Wellington, New Zealand: School of Information Management, Victoria University