2016-10-05 8 views
1

내 응용 프로그램 "노드는"부모와 자녀가있는 트리 구조로 구성되어 있습니다 : E와 F는 아래 하위 동안노드간에 데이터 전달. 어떻게 그들을 깨끗하게 유지?

A---------B---------C---------D---------E 
           \---------F 

A는 최고 조상입니다. 실행 흐름은 오름차순 측면에서 자손 측면으로 진행됩니다.

모든 단일 노드는 처리해야하는 특정 유형의 데이터를 허용합니다. 설계 결정에서 노드가 수신 할 수있는 데이터는 서로 분리되어 있습니다.

이제 노드 E와 F에 특정 유형의 데이터가 필요하지만 C 노드에서만 사용 가능하다고 가정 해 보겠습니다. 그래서 C 노드에서 E 노드와 F 노드까지 데이터를 전송하는 메커니즘이 필요합니다.

해결 방법 1 : 하위 노드가 조상 노드의 데이터에 액세스하도록 허용합니다. 그래서 나는이 데이터를 C 노드에 추가하고 E 노드와 F 노드에서 가져올 수 있습니다. 이 솔루션에 대해 내가 좋아하지 않는 것은 모든 중개 노드 (C 및 D 포함)에 실제로 필요하지 않은 일부 데이터가 포함된다는 것입니다. 나에게 그것은 미래에 응용 프로그램을 관리하는 데 문제가있는 것처럼 들립니다.

해결 방법 2 : C에서 데이터를 저장하는 데 사용할 수있는 임시 저장소 클래스를 도입하고 E 및 F 노드에서 데이터를 가져 와서 필요한 위치에 데이터를 가져옵니다. 이 솔루션은 나에게 다소 불투명하게 들리며 애플리케이션을 복잡하게 만든다.

그래서 나에게 어떤 솔루션을 제공하겠습니까? 아니면 볼 수없는 다른 솔루션입니까?

저는 소프트웨어 디자인을 처음 접했으므로 어떤 의견이나 제안도 환영합니다.

감사합니다.

+0

코드를 명확하게 추가 할 수 있습니까? –

+0

여기서 메시지 버스가 도움이되는 것을 볼 수 있습니다. –

답변

0

노드는 서로 독립적이어야하며 노드의 순서와 레이아웃을 알 수 없어야합니다.

노드를 연결하는 클래스는 노드간에 데이터를 전파하는 지식이 있어야합니다. 그래서 더 나은 옵션은 그것이 C의 데이터 컨테이너에 액세스하고 데이터를 추출

E.을 노드로 채워집니다 것 통지를 가지고 그 process.once을 수행 C 번 알림을 얻을 것이다 DataConnector CtoEDataConnector을 소개하는 것입니다 즉, DataConnectors는 노드가 서로 연결될 때 추가되어야합니다.