静态类与私有实例 - 优点/缺点 - 阅读更多信息

时间:2012-06-03 00:22:36

标签: security static singleton instance private

我正在试图找出设计游戏结构的最佳方式。

目前我在各地存储类实例,但我更喜欢使用直接静态访问。

例如,我有一个名为“ 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);

那么在那个额外的类中,我可以访问存储在整个类文件中的任何静态类成员或公共静态实例。

所以我想知道的是,使用实例会更安全吗?或者对于这种情况,我应该选择静态类吗?我希望游戏能够针对这类问题采取某种安全措施。

以下是我看到的获取课程访问权限的三种方式

静态访问 - 此人可以随时随地访问此课程(这是我首选的易用策略)。

   ClassB.DoSomething();

存储在各处的实例 - 每个类都会创建一个已创建的类实例,以便他们可以随时访问它。类具有存储所需的所有实例,而不包含任何其他实例。

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

classB.DoSomething();

存储在一个类中的实例 - 1个类创建所有类的单个实例,通常只创建一个实例。然后,您将创建此类的实例,并将其存储到需要访问以前创建的实例的所有类中。只有存储主实例的类才能访问其他实例。

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

1 个答案:

答案 0 :(得分:0)

在我看来,你会因为阅读on this而受益。

基本上你选择哪一个更多是个人选择。当然,每种方法都有性能考虑因素,但语义也很重要。作为软件工程师,您可以自行决定什么是最好的。