Vordefinierte Standardwerte

Lucaaa

Bekanntes Mitglied
Hallo!
Ich brauche für mein Programm Standardwerte. Heißt: Man soll einer Klasse einen Parameter übergeben, in diesem Fall, da es um Farben geht sowas wie: ONLYDARKCOLORS .
Die Farben werden als Integer Werte gespeichert.
Meine Frage ist nun, ob ich diese Standardfarben einfach als Variablen in meiner Klasse speichern sollte (es sind viele) oder ob es da eine bessere Möglichkeit gibt (Datenbank? oder etwas anderes).
Der Aufbau ist wie folgt:
Code:
Profil 1 :  
  Farbe 1, Farbe 2, Farbe 3, Farbe 4...
Profil 2:
   Farbe 5, Farbe 6, Farbe 2...

Und dann halt später:
Code:
if(Profil==Profil 1) {
farben = Ladeprofil(1);

Im Prinzip geht es mir nur darum, wie ich es am besten Speichern sollte.
 

mrBrown

Super-Moderator
Mitarbeiter
Stehen die Werte zur Compilezeit fest oder ändern sie sich zur Laufzeit?
Was heißt "viele"?


Je nachdem entweder Enum, Datei in den Resources, Datei im Dateisystem oder Datenbank. Die eine ideale Lösung gibt es nicht immer.
 

Lucaaa

Bekanntes Mitglied
Stehen die Werte zur Compilezeit fest oder ändern sie sich zur Laufzeit?
Es handelt sich sozusagen um vorgefertigte Profile. Also z.B. nur Helle Farben (Weiß, Gelb...). Die werte für diese Profile stehen fest, und können nicht geändert werden.

Was heißt "viele"?
Viele heißt in dem Fall nicht Tausende, sondern eher so 20-60 je nach Farbprofil. Allerdings ist es Zuviel, um alles in die Klasse zu schreiben, sonnst findet da niemand mehr was.
 

MoxxiManagarm

Top Contributor
Und wie wäre es mit einer ProfilFactory?

Java:
// Profil ist von den eigentlichen Profileinstellungen losgelöst
public class Profil {
    private Color colorA, colorB, colorC;

    public Profil(Color colorA, Color colorB, Color colorC) {
        this.colorA = colorA;
        this.colorB = colorB;
        this.colorC = colorC;
    }

    /* getter & setter */
}

// Die Profile werden alle in dieser Klasse vorbelegt
public class ProfilFactory {
    public static Profil hellesProfil() {
        return new Profil(Color.LIGHTBLUE, Color.LIGHTGREEN, Color.LIGHTPINK);
    }
   
    public static Profil dunklesProfil() {
        return new Profil(Color.DARKBLUE, Color.DARKGREEN, Color.PINK);
    }
}
 

mihe7

Top Contributor
Die hätte den Nachteil, dass Profilnamen auf Methodennamen abgebildet werden müssten. Da würde ich lieber eine Map nehmen.
 

Senftube

Aktives Mitglied
Ich würde die Profile in je einer .properties Datei ablegen bzw. anbieten und im program je nach Wunsch (helle oder dunkle) laden. Damit du immer für alle Farben garantiert einen Wert bekommst
- auch wenn in einem Profil nur 20 Werte sind, würde ich aus dem APL.Ordner eine default_colors.properties zuerst laden und dann die userspezifische dazu, sodass du mit colpros.getProperty("color_blue","BLACK") IMMER ein blaue Farbe bekommst.
Idealerweise sollten ALLE . .properties die gleiche Anzahl Farben enthalten, dann kann
auf default-colors.properties verzichtet werden.

Java:
public static Properties loadProperties(Path propfile,Properties... defProps) throws IOException
{
    final String fn = "loadProperties()"; 
    if (propfile == null)  throw new IOException(fn + ": Cannot load properties file = 'null'");   
    if (!Files.isRegularFile(propfile)) throw new IOException(fn + ": Doesn't exist: " + propfile);
       
    BufferedReader br=null;
    Properties cfg=null;
try
{   Charset cs = MyFile.getCharSet(propfile);
    br = Files.newBufferedReader(propfile,cs);
    br.mark(4);
    if ('\ufeff' != br.read()) br.reset(); // SKIP THE BOM if the first char is 0xfeff  
 
    if (defProps != null && defProps.length > 0) cfg = new Properties(defProps[0]);
    else                                         cfg = new Properties();   
   
    cfg.load(br); //  load() laedt zu den evtl. existieren defaults dann userspez. dazu         
    return cfg;
   
} catch (Exception e)
{  throw new IOException(fn + ": " + e + " (File: " + propfile + ")");
} finally
{  if (br != null) { try { br.close(); } catch (Exception ee) {} }
}
} //--------------------- end of loadProperties()
 
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben