2016-07-27 22 views
0

Ich erstelle ein Spiel in Java. Ich habe diese Director-Klasse, die meinen Spiel-Thread einrichtet und hauptsächlich damit befasst, wie das Spiel funktioniert. Die Klasse sollte und wird nicht mehr als einmal instanziiert. Sollten die Variablen innerhalb der Klasse statische Variablen sein oder nicht? Ich bin neugierig, was die Java-Codierungskonvention (wenn nicht jede andere objektorientierte Sprache) für so etwas wäre.Sollen statische Variablen in einer Klasse verwendet werden, die nur einmal instanziiert wird

Danke!

+1

Sie beschreiben ein Singleton. Es gibt nützliche Informationen über die verschiedenen Möglichkeiten, sie unter https://en.wikipedia.org/wiki/Singleton_pattern zu implementieren. – sprinter

Antwort

1

Nein, Elementvariablen sollten nicht static sein. Das einzige, was relevant ist, ist, dass Sie eine einzelne Instanz der Klasse Director benötigen, um Ihren Job zu verwalten, der gemäß Ihrem Code static sein kann oder nicht.

Jetzt, wenn Sie keinen Zugriff auf Director Instanz von überall um Ihren Code benötigen, dann können Sie einfach eine Instanz irgendwo, sonst ein singleton Muster könnte nützlich sein. Dies ist ein Muster, das eine einzelne Instanz einer Klasse verwaltet, auf die überall in Ihrem Code zugegriffen werden kann.

Etwas wie:

class Director { 
    private static Director director; 

    private Director() { 
    ... 
    } 

    public static Director getInstance() { 
    if (director == null) 
     director = new Director(); 

    return director; 
    } 
} 
+0

Also gilt das Gleiche, wenn das einzige, was ich wirklich mit der Klasse mache, es instanziiert? Wie ich keine seiner Methoden oder irgendetwas anrufe. –

+0

Wenn Sie keine Methode der 'Klasse' von irgendwo außerhalb aufrufen, dann wäre es genug, sie in' void main (String [] args) 'zuzuordnen, da sie bis zum Beenden des Programms bestehen bleibt. – Jack

1

Nicht wirklich.

Was Sie suchen, ist Singleton Entwurfsmuster, in dem es nicht notwendig ist, dass Elementvariablen statisch sind.

+0

Danke. Ich schätze es. Ich sah das Singleton-Entwurfsmuster in anderen Fragen, aber diese sprachen typischerweise über statische Klassen, von denen ich ziemlich sicher bin, dass ich sie nicht habe. –