2013-04-29 146 views
1

我正在尋找一段時間,但我想這裏沒有任何問題,我真的可以找到我的問題的答案。避免循環依賴的模式

我正在使用java編寫基於文本的RPG遊戲,我的地圖被分割成幾個區域,保存在數據庫中,因爲數據量過大,無法存儲到內存中。總是有一個區域加載其中包含*字段。每個領域可以包含0 .. * NPC,物品,道具,...

現在我的問題是,每次玩家走到一個領域,該領域(也許在其鄰居)上的所有NPC應該可見,這使得將NPC參考保存在字段中變得非常謹慎。另一方面,NPC應該能夠相當自由地移動,如果NPC能夠提供他們目前在哪個領域的參考,那麼會更容易些。

我現在讀了很多關於循環依賴的內容,我很確定這是解決這個問題的最醜陋的方法。我現在想要的是在每個區域存儲NPC的參考資料,並在NPC中存儲參考資料。這將是一條中間道路,唯一的大問題是將NPC從一個地方移到另一個地方,但至少這不會經常發生。

現在我要求的是某種模式來解決這個問題,或者只是一個好主意,讓我走向正確的方向。如果有人能幫助我,我會很高興。

謝謝

回答

0

如果你使用一個數據庫來存儲一切,它可能會更好,使每個項目的位置的引用/ NPC的/ etc(空了沒有位置)和查詢通過,而不是在每個位置存儲一個列表。

+0

這一個好主意,但我想將玩家所在的整個區域加載到內存中以避免性能問題。我猜如果我每次玩家移動時都會提出一個查詢,並且還想在玩家位置周圍的地區找出NPC,這將需要很多時間。我想知道沒有更好的選擇。 – Grochni 2013-04-29 21:08:03

1

我意識到這是一個老問題,但希望其他人可能需要這個意見。

我所見過的經常是將循環依賴性彼此遠離,以便它們不會直接意識到或影響。做到這一點的一種方法是引入一名中間人,這將保留兩者的參考。 在面向對象的編程中,它將使用接口並使相關類實現和使用接口。

由設計大師們說的更好的選擇,改變你的設計,以便在這種情況下,不結束(說起來容易......) 希望這有助於

V