" Observer "유형과 " Subject " 유형의 두 가지 클라이언트 유형이 있습니다 . 둘 다 그룹 계층 구조 와 관련 이 있습니다 .
관찰자는 서로 다른 계층 전체에서 연결된 그룹으로부터 데이터 를 받습니다 (달력) . 이 데이터는 데이터 를 수집하려는 그룹 의 '부모'그룹 의 데이터를 결합하여 계산됩니다 (각 그룹은 하나의 부모 만 가질 수 있음 ).
주체는 관련 그룹에서 데이터 (관찰자가받을)를 만들 수 있습니다. 그룹에서 데이터를 만들면 그룹의 모든 '자녀'도 데이터를 가지게되며 데이터 의 특정 영역에 대한 고유 한 버전 을 만들 수는 있지만 생성 된 원래 데이터 ( 특정 구현에서 원본 데이터에는 시간과 헤드 라인이 포함되며 하위 그룹은 해당 그룹에 직접 연결된 수신기의 나머지 데이터를 지정합니다.
그러나 주체가 데이터를 만들 때 영향을받는 모든 관찰자 에게이 데이터와 충돌 하는 데이터 가 있는지 확인해야합니다 . 이는 내가 이해할 수있는 한 큰 재귀 함수를 의미합니다.
그래서 나는 이것이 당신이 위아래로 갈 수있는 계층 구조 를 가질 수 있어야한다는 사실에 요약 될 수 있다고 생각 합니다. , 일부 장소 할 수 전체로 처리 (기본적으로, 재귀).
또한, 나는 작동하는 솔루션을 목표로하지 않습니다. 상대적으로 이해하기 쉽고 (적어도 아키텍처 측면에서는) 향후 추가 기능을 쉽게 수신 할 수있을 정도로 유연한 솔루션을 찾고 싶습니다.
이 문제 또는 유사한 계층 구조 문제를 해결하기위한 디자인 패턴이나 모범 사례가 있습니까?
편집하다 :
내가 가진 디자인은 다음과 같습니다.
"Phoenix"클래스는 적절한 이름을 아직 생각하지 않았기 때문에 그렇게 명명되었습니다.
그러나 이것 이외에도 특정 관찰자 들이 그룹을 통해 그들에게 붙어 있음에도 불구하고 특정 관찰자들에 대한 특정 활동 들을 숨길 수 있어야합니다 .
약간의 주 제외 :
개인적으로, 나는이 문제를 더 작은 문제로 잘라낼 수 있어야한다고 생각하지만 어떻게 나아갈 수 없습니다. 서로 관련이없는 여러 재귀 기능과 다른 방식으로 정보를 가져와야하는 다른 클라이언트 유형이 관련되어 있기 때문이라고 생각합니다. 나는 정말로 머리를 감쌀 수 없다. 누군가가 계층 구조 문제를 캡슐화하는 데 더 나은 방법을 안내 할 수 있다면 그 사실을 매우 기쁘게 생각합니다.
O(n)
잘 정의 된 데이터 구조에 대한 효율적인 알고리즘을 찾고 있다면 그 일을 할 수 있습니다. Group
계층 구조의 변경 방법 과 구조를 넣지 않은 것으로 보입니다 . 이것이 정적이라고 가정합니까?
n
다른 모든 정점이 최소 1 이상의 정도를 갖는 반면 항상 0 도의 고유 한 정점이 존재한다는 것이 사실 입니까? 모든 정점이 연결되어n
있습니까?n
독창적 인 길인가 ? 데이터 구조의 속성을 나열하고 그 동작을 인터페이스 (메소드 목록)로 추상화 할 수 있다면, 우리는 (I) 상기 데이터 구조의 구현을 생각 해낼 수있을 것입니다.