2012-04-13 10 views
5

Piszę małe gry java i jestem przechowywania globalnych ustawień gry w strukturze klasowej jak poniżej:Jak najlepiej przechowywać gier zmiennych konfiguracyjnych w Javie

public class Globals { 
    public static int tileSize = 16; 
    public static String screenshotDir = "..\\somepath\\.."; 
    public static String screenshotNameFormat = "gameNamexxx.png"; 
    public static int maxParticles = 300; 
    public static float gravity = 980f; 
    // etc 
} 

Chociaż jest to bardzo wygodne do pracy z Chciałbym wiedzieć, czy jest to zaakceptowany wzorzec.

Odpowiedz

10

Zapisz w pliku .properties.

config.properties

tile.size=16 
screenshot.dir=..\\somepath\\.. 

lektury

// Make sure this happens only the first time you start your application 
Properties properties = new Properties(); 
// You can use FileInputStream, ClassLoader.getResourceAsStream or a reader too 
properties.load(...) 

korzystanie z niego

int tileSize = Integer.valueOf(properties.getProperty("tile.size")); 
String screenshotDir = properties.getProperty("screenshot.dir"); 

do S implify rzeczy i zachować swoje zmiany minimalne, można też zrobić coś takiego:

public class Globals { 
    private static final Properties properties = new Properties(); 

    static { 
     // do the loading here 
    } 

    public static final int TILE_SIZE = 
     Integer.valueOf(properties.getProperty("tile.size")); 
    public static final String SCREENSHOT_DIR = 
     properties.getProperty("screenshot.dir"); 
    // etc 
} 
+1

Osobisty, wolałbym przechowywać je w POJO i (de) serializować do pliku XML z pewną biblioteką XStream. O wiele wygodniejsze niż czytanie właściwości. Zbyt leniwy, aby napisać osobną odpowiedź. – bezmax

+0

+1 dla właściwości: są proste, każdy je rozumie, a użytkownicy końcowi są edytowalni. –

+0

W przypadku, gdy chcesz ukryć właściwości przed złoczyńcą, używanie klasy ze statycznymi varsami wydaje się bardziej korzystne niż plik .properties pod względem bezpieczeństwa. Klasa nadal może być dekompilowana, ale to bardziej skomplikowane zadanie. –

1

Jeśli to naprawdę niewielka aplikacja, będzie to zrobić. To nie jest idealne, ale nie ma sensu wnosić zbytniego wyrafinowania na małą skalę.

Ale odczytaj te wartości z pliku właściwości.

Powiązane problemy