2012-05-06 24 views
6

Ich habe zwei Möglichkeiten, um Konstanten zu definieren. Der erste enthält die Menge der statischen finalen DataType-Variablen in einer Klasse und die andere mithilfe von Enum. HierSo definieren Sie konstante Werte - Best Practice

ist die Faust Typ:

public class TipTipProperties { 
    public static final String MAX_WIDTH_AUTO = "auto"; 
    public static final String POSITION_RIGHT = "right";  
} 

Und die Verwendung dieser Variable wird über statischen Aufruf, als Beispiel: TipTipProperties.MAX_WIDTH_AUTO

und der zweite Typ ist:

public enum TipTipProperties { 

    MAX_WIDTH_AUTO(MaxWidth.AUTO), 
    POSITION_RIGHT(Position.RIGHT); 

    private MaxWidth maxWidth; 
    private Position position; 

    private TipTipProperties(MaxWidth maxWidth) { 
     this.maxWidth = maxWidth; 
    } 

    private TipTipProperties(Position position) {  
     this.position = position; 
    } 

    public MaxWidth getMaxWidth() { 
     return maxWidth; 
    } 

    public Position getPosition() { 
     return position; 
    } 

    public enum MaxWidth { 
     AUTO("auto"); 

     private String width; 

     private MaxWidth(String width) { 
      this.width = width; 
     } 

     public String getWidth() { 
      return width; 
     } 
    } 

    public enum Position { 
     RIGHT("right"),   

     private String position; 

     private Position(String position) { 
      this.position = position; 
     } 

     public String getPosition() { 
      return position; 
     }  
    } 
} 

Als Beispiel Verwendung: TipTipProperties.POSITION_RIGHT.getPosition().getPosition().

Meine Frage ist:

  • Welche bessere OOP und warum?
  • Gibt es Alternativen oder einen besseren Ansatz?

Vielen Dank im Voraus.

+2

'Enum ++; finalString -; ' – assylias

+2

Ist das erste Beispiel kompiliert? Sollte es nicht "öffentliche Klasse TipTipProperties" sein? –

+0

@HunterMcMillen, es ist meine Schuld. Fehler kopieren/einfügen. –

Antwort

2

Enum ist das Beste, dies zu tun, wie Joshua Bloch in Effective Java sagte, Sie haben mehr Kontrolle mit Enum wie wenn Sie alle Konstanten drucken möchten, können Sie. mit Klassenkonstanten können Sie nicht Typ Sicherheit haben. read this for further help

+0

Danke für die Antwort. Benutze ich enum richtig? –

1

Die Verwendung einer Eigenschaftendatei in Ihrem Projekt wäre auch ein guter Weg, dies zu tun. Wie man das in Java macht, wird unter post erklärt.

Sie können im Stammverzeichnis Ihres Projekts im Grunde eine Datei namens tiptip.properties erstellen und dann alle Schlüssel/Wert-Paare speichern, die Sie benötigen.

+0

Danke für die Antwort. Ist die Verwendung von Eigenschaftendateieffekten nicht geeignet? –

+1

Sie könnten eine Klasse erstellen, wie Ihre erste Version oder möglicherweise die enum-Version (ich habe noch nicht über eine Enum-Version nachgedacht, daher kann es nicht funktionieren), die die Werte aus der Eigenschaftendatei liest und sie den Konstanten zuweist . Ja, endgültige Variablen können zur Laufzeit zugewiesen werden, sie müssen zur Kompilierungszeit keine Werte erhalten. Auf diese Weise haben Sie die Flexibilität, sie zu ändern, ohne sie neu kompilieren zu müssen, und die Geschwindigkeit, mit der sie direkt auf sie zugreifen, anstatt die teureren Nachschlagevorgänge bei jedem Zugriff. – TofuBeer