我是一個網絡開發者(遊戲開發者爲愛好),並且我看到我自己多次使用以下範例。 (無論是在開發服務器架構還是開發視頻遊戲方面)。它看起來非常難看,但我不知道解決方法。我將在遊戲開發中舉一個例子,因爲這是我最近注意到的。這是我一直在努力的RPG遊戲。每次戰鬥開始時,CombatEngine都會創建兩方戰鬥人員。每次戰鬥建立一個與給定的戰鬥,這是負責支配玩家移動的這沒有收到明確的命令相關的ArtificialIntelligence對象:古怪的參考在課堂建設中傳遞
public class Combatant {
ArtificialIntelligence ai = null;
public Combatant()
{
// Set other fields here.
this.ai = new ArtificialIntelligence(this);
}
}
這裏就是我不喜歡:內場(ArtificialIntelligence)在施工期間需要一名戰鬥員,因爲它需要一些Combatant字段來指示適當的行動。所以,爲了方便起見,我保留對作爲參數傳入ArtificialIntelligence對象的戰鬥員的引用,但該對象包含對ai對象本身的引用!它創造了這個奇怪的遞歸,但我不知道如何解決它。 AI對象需要很多特定於戰鬥員的字段,這就是爲什麼我傳入整個對象的原因,但我不喜歡該對象如何包含對上層戰鬥員中包含的ai字段的引用字段,它包含在上面的ai類中。這是不好的做法,還是我只是在想它?
您是否遇到了stackoverflow錯誤?我對此表示懷疑,如果沒有,那麼這裏就不會有遞歸,只是引用傳遞。我認爲你在這裏沒有問題。 –
Woops,我是一個貿易數學家,所以我的一些術語缺乏。你是對的,這只是參考傳遞。這仍然被認爲是一個非問題?在這種形式下嵌套參考不是不好的做法嗎?並回答你的問題,我沒有得到任何錯誤。我只是覺得它看起來很糟糕,並且想要得到意見。 – Sal