2013-04-29 2 views
1

잠시 동안 찾으려고했지만 내 문제에 대한 답을 어디에서 찾을 수 있는지 궁금하지 않습니다.원형 종속성을 피하기위한 패턴

자바 기반의 텍스트 기반 RPG 게임을하고 있는데 메모리에 저장하는 데 너무 많은 양의 데이터가 있기 때문에 맵에 여러 개의 영역이 분할되어 데이터베이스에 저장됩니다. 항상 필드가있는로드 된 영역이 하나 있습니다. 각 필드는 0을 포함 할 수 있습니다. * NPC, 아이템, 소품, ...

이제 내 문제는 플레이어가 필드 위로 걸어 갈 때마다이 필드의 모든 NPC가 있어야한다는 것입니다. 보이는, 필드에 NPC 참조를 저장하는 것을 지장을줍니다. 다른 한편, NPC는 현재 어느 필드에 대한 참조를 가지고 있다면 NPC는 꽤 자유롭고 쉽게 이동할 수 있어야합니다.

이제는 순환 종속성에 대해 많이 읽었으며이 문제를 해결하는 가장 어려운 방법이라고 확신합니다. 내가 지금 생각하고있는 것은 각 지역의 NPC에 대한 참조와 NPC의 필드에 대한 참조를 저장하는 것입니다. 이는 중도 적이며 NPC를 하나의 영역에서 다른 영역으로 이동시키는 것이 유일한 큰 문제이지만 적어도 그렇게 자주 일어나지는 않습니다.

이제 내가 원하는 것은이 문제를 해결하기위한 패턴이거나 올바른 방향으로 인도하는 좋은 아이디어입니다. 누군가 나를 도울 수 있으면 기뻐할 것입니다. 당신이 모든 정보를 저장하는 데이터베이스를 사용하는 경우

는 각 항목에서의 위치에 대한 참조가 아마 더 나은,

답변

0

주셔서 감사합니다/NPC/등보다는 그하여 (어떤 위치에 대한 널 (null)) 및 쿼리 각 위치에 목록을 저장하십시오.

+0

있다는 데 도움이 좋은 생각이지만 플레이어가있는 전체 영역을 성능 문제를 피하기 위해 메모리에로드하고 싶습니다. 플레이어가 움직일 때마다 쿼리를 작성하고 플레이어 위치 주변의 필드에서 NPC를 찾으려면 많은 시간이 걸릴 것입니다. 나는 더 나은 대안이 없는지 궁금해. – Grochni

1

나는 이것이 오래된 질문이라는 것을 알고 있지만, 다른 누군가는이 의견을 필요로 할 수도 있습니다.

내가 종종 보아 왔던 것은 순환 종속성을 서로 멀리 이동 시켜서 그들이 직접 인식하거나 영향을 미치지 않도록하는 것입니다. 이를 수행하는 한 가지 방법은 중간자를 소개하는 것이고 두 사람 모두의 참고를 유지할 것입니다. 객체 지향 프로그래밍에서 인터페이스를 사용하고 두 종속 클래스 모두 인터페이스를 구현하고 사용하도록하는 것이 좋습니다. (쉽게 말 ...)이 상황에서 희망을 종료하지 않도록

설계 전문가에 의해 명시된 바와 같이 더 나은 옵션

, 당신의 디자인 변경이

V