1. 노드끼리 부모-자식의 관계를 맺을 수 있는 트리 시스템을 만드는중
근데 모든 노드를 동일한 인터페이스로 구현하게 되면 순환참조 데이터가 들어올 수 있음
읽어온 데이터가 A는 B의 자식이다, B는 A의 자식이다 이런식으로 들어오면 무한루프가 뜸
2. 순환참조를 원천봉쇄하려면 부모노드와 자식노드의 인터페이스를 분리해야함
이경우 뎁스가 한정되고 복합체 노드를 구현할 수가 없음
즉, 윈도우 탐색기로 치면 폴더 안에 또다른 폴더가 들어가게는 못만든다는 뜻.
무조건 폴더 안에는 파일만 들어가게 만들면 자식폴더가 부모폴더를 포함하는 무한루프성 결함데이터 발생을 원천봉쇄 가능.
3. 데이터를 검증해서 생성할 수는 없음. 데이터는 게임 외부에서 들어오는거라
그리고 읽어온 데이터에서 무한루프를 감지한다 해도 그 감지된걸 핸들링할 판단근거가 없음.
A->B, B->C, C->A같은 순환데이터가 들어오면 누가 루트고 누가 리프인지 알 방법이 없으니
데이터 구조를 어떻게 짜는게 바람직할까?
A. 결함을 허용하지 않는다. 루트는 무조건 부모고, 루트 아래는 무조건 말단이다. 더 깊은 뎁스가 필요하면 기획을 최대한 수정해서 필요하지 않도록 만든다.
대신 데이터는 양식만 지켜서 넣으면 정상작동이 보장된다.
B. 결함 가능성이 있는 복합체를 허용하고 무한루프가 나는 데이터는 void처리한다.
데이터 오류는 감지만 가능할뿐 해소할 방법이 없기때문에 결함 데이터가 들어왔을때 게임에 필연적으로 빵꾸가 발생하고 정상 작동을 보장할 수 없다.
최대 depth를 정해서 순환 참조가 있어도 끝나도록 하거나 depth가 그리 깊은게 아니라면 전부 돌려서 순환 참조가 있는지 검사하는 로직 넣어야지
트리형식을 갖다버리고 그래프를 도입해서 bfs를 돌린다
구체적으로 뭔 상황인지 모르겠는데 결함을 해소할 방법이 왜 없음? 데이터 빠꾸먹이면 되잖아 그냥
복합체 패턴 구현 핵심중에 하나가 순환 참조 처리 정책을 어떻게 할지인데 못한다면 못 쓰는거지 뭐 데이터별로 제한 레벨을 정해주고 레벨보다 깊은 뎁스에서 참조를 막던가 데이터 평탄화해서 가지별로 나열하고 그거 기준으로 노드는 참조용 컨테이너로만 쓰고 데이터 자체는 별도 인스턴스로 할당하거나 근데 결국엔 데이터 파싱해서 구분할 기준은 있어야함
원래가 복합체 쓰려면 안고가야되는거 맞구나 ㅜ 뭔가 가닥이 잡힐거같기도 하고 생각좀 해봐야될듯 ㄱㅅㄱㅅ