2012-06-03 54 views
1

我試圖找出哪種設計遊戲結構的最佳方法。靜態類與私有實例 - 優點/缺點 - 閱讀詳細信息

目前我在任何地方存儲類實例,但我寧願使用直接的靜態訪問。

比如我有一個名爲「GameSaveSystem.cs

此類處理獲得StorageDevice類和目前所有的球員都與存儲相關的信息。

所以我目前的策略是以下

---------------- MainClass.cs

public static void Main(string[] args) { 
     new Main(); 
} 

--------- ------- Main.cs

public Main() { 
    GameSaveSystem save_system = new GameSaveSystem(); 
    singlePlayer = new SinglePlayer(save_system); 
    multiPlayer = new MultiPlayer(save_system); 
} 

---------------- SinglePlayer.cs

SinglePlayer(GameSaveSystem save_system) { 
    this.save_system = save_system; 
} 

個---------------- MultiPlayer.cs

MultiPlayer(GameSaveSystem save_system) { 
    this.save_system = save_system; 
} 

我這樣做的原因是因爲在Java我可以創建一個新的java文件並調用它「MainClass.main(args);

所以那裏面額外的I類可以訪問任何靜態類成員或公共靜態情況下,它們存儲在整個類文件。

所以,我不知道是不是會更安全使用或者對於這種類型的情況,我應該去靜態類?我希望遊戲對這種類型的問題有某種安全性。

所以下面是我見過的3種方式來獲取訪問class

Static access - were the person可以隨時隨地訪問此課程(這是我首選的易用戰略)。無處不在存儲

ClassB.DoSomething(); 

實例 - 每個每類將有一個類的創建的實例存儲,以便他們隨時訪問它。類有它們需要存儲的所有實例,沒有別的。

public class A(ClassB classB) { 
     this.classB = classB; 
} 

classB.DoSomething(); 

實例存儲在一個類 - 第1類創建所有通常將只有1個實例創建的類的一個實例。然後你創建這個類的一個實例並將它存儲到需要訪問先前創建的實例的所有類中。只有存儲主實例的類才能訪問其他實例。

public class A(Main main) { 
     this.main = main; 
    } 
    main.getInstanceB().DoSomething(); 
+0

看起來都不美味。 – starbolin

回答

0

它看起來像你對我會閱讀一點點on this受益。

從本質上來說,你選擇的是更多的個人選擇。當然,每個都有性能方面的考慮,但語義也很重要。作爲軟件工程師,由您決定什麼是最好的。