2012-12-18 2 views
2

grand 자식에서 부모로 속성 변경 이벤트를 전파하는 적절한 방법을 찾고 있습니다. 우리는 트리 구조를 가지고 있고 잎의 일부 속성이 변경 될 때이 트리의 루트에 통지해야한다고 가정 해 보겠습니다. 한 가지 방법은 노드의 속성 변경 리스너를 자식 노드에 추가하고 이벤트를 전임자에게 다시 호출하는 것입니다. 또 다른 방법은 계층에 상관없이 모든 자식의 속성 변경 이벤트에 루트를 가입시키는 것입니다. 그래서 문제는 올바르게 수행하는 것입니다. 거기에 어떤 패턴이 있습니까?grand (grand-grand) 자식에서 부모로 속성 변경 이벤트를 전파하는 올바른 방법

답변

0

나는 이벤트를 전파해야하는 빈도와 비교할 때 트리 수정 빈도에 따라 트레이드 오프가 있다고 생각합니다.

트리가 자주 변경되는 경우 정보를 트리 바로 위쪽의 부모를 통해 전달합니다. 필요한 유일한 설정은 각 노드의 상위 포인터입니다. 또한 매우 간단합니다.

트리 변경이 자주 발생하지 않고 알림 프로세스의 성능이 중요한 경우 루트와 각 리프 사이에 직접 수신기 관계를 설정하는 것이 좋습니다.

2

내 프로젝트 중 하나에서 우리는 그렇게하기위한 프레임 워크를 개발했습니다. 마지막으로 우리는 중첩 된 구조의 속성을 명시 적으로 구독하고 이벤트를 반환하는 것과 같은 것을 사용하지 않기로 결정했습니다. 이것은 꽤 지저분 해졌을 것입니다.

우리의 솔루션은 나무 같은 구조로 구성된지도 기반 모델로 작동합니다. 하나는 트리의 아무 곳에 나 리스너를 등록 할 수 있습니다. 우리가 사용하기에 더 좋게 만들기 위해서 우리는 트리 구조가 pojos (트리의 구조가 모델의 생성시에 빌드 됨) 뒤에 사라지는 프록시 셸 (shell)에 래핑했습니다.

물론 우리는 우리가 원했던 것을 할 수있는 프레임 워크를 찾았지만 아무 것도 없었습니다. 기존의 모든 프레임 워크는 평평한 포르노만을 처리했습니다. 그것은 많은 작업 이었지만 지금은 매우 만족합니다.

+0

Btw, 우리는 주로 복잡한 pojos에 GUI 요소를 바인딩하기 위해 그 모델을 사용합니다. – sorencito

관련 문제