Typisierte Konfiguration
Die typisierte Konfiguration als Konzept erleichtert dem Entwickler, die anwendungsdefinierten Klassen (z.B. Layout-Komponenten) konfigurierbar zu machen. Eine Konfiguration wird direkt in der Klasse als inneres Interface hinterlegt, welches von ConfigurationItem ableitet und der Java-Beans-Konvention folgt. Jeder Getter in so einem Interface definiert eine Eigenschaft, liefert den konfigurierten Wert als Ergebnis und kann überall in der Klasse aufgerufen werden.
/** The class that need configuration. */
public class Car {
/** The configuration interface that defines the configuration. */
public interface Config extends ConfigurationItem {
int getHorsePower();
String getColor();
}
...
public void decide(...) {
...
// Access to the configuration value.
if (getConfig().getHorsePower() < 100) {...}
...
}
}
Die obige Beispiel-Konfiguration kann dann über folgendes XML-Document konfiguriert werden:
<config
horse-power="120"
color="red"
/>
Das Framework übernimmt die Aufgaben:
- Instanziierung der Konfiguration über Reflection.
- Serialisierung der Konfiguration in eine XML-Datei (z.B. eine
*.layout.xml
) und Parsen der XML-Datei in eine mit Werten befüllte Konfiguration (anpassbar durch @Binding-Annotations). - Mapping zwischen dem Namen des Getters
getHorsePower()
und Namen der Eigenschafthorse-power
in der XML-Datei (anpassbar durch @Name-Annotation). - Konsistenz zwischen dem Rückgabetyp des Getters und dem Wertetyp der Eigenschaft in der XML-Datei (anpassbar durch @Format-Annotation).
Entsprechende Setter kann man auch in der Konfiguration aufführen, falls man vorhat die aus der XML-Datei eingelesene Werte zu ändern.
Der Wert einer Eigenschaft kann selbst eine Konfiguration sein - dadurch entsteht ein ganzer Konfigurationsbaum.