Ich arbeite an einer Java-Anwendung, wo in erhalten wir XML, die XML enthält einige Daten aus vielen Regionen auf der ganzen Welt. So sieht xml so ausLaden Kompilierzeit Konstanten von Eigenschaftendatei
<Shipment>
<Region>
<name>China</name>
<calculatedValue>0.001</calculatedValue>
<deviation>-1<deviation>
</Region>
<Region>
<name>Russia</name>
<calculatedValue>0.091</calculatedValue>
<deviation>-1<deviation>
</Region>
<Region>
<name>UK</name>
<calculatedValue>2.001</calculatedValue>
<deviation>-12<deviation>
</Region>
// lots of other regions //
</Shipment>
Wir haben eine Pojo namens Dock.
Wir extrahieren die Region aus diesem XML-Objekt, erstellen ein Regionsobjekt und fügen es zum Dock-Objekt hinzu. Jetzt haben wir auch eine Enum, die alle von unserer Anwendung unterstützt definiert.
enum SupportedRegions{
CHINA (201, "APAC"),
RUSSIA (202, "EUR")
}
Jetzt bekommen wir Anforderung, auch andere Regionen zu unterstützen. Jetzt möchten wir unseren Code so umgestalten, dass es einfach und konfigurierbar wird, Regionen durch das Support-Team zu unterstützen.
Wir wollen es aus dem Code verschieben und in einer Eigenschaftendatei mit minimalen Änderungen pflegen. Wir haben einen Anrufcode wie.
Jetzt, wenn ich die enum entfernen und alle Regionen in Eigenschaften verschieben. Ich muss mein Dock-Klasse so etwas wie dieses
private Map<String, Region> regionalShipmentDetails = //
//some field and getter setter.
getShipmentDetailsForRegion (String region) { this.regionalShipmentDetails.get(region)
}
}
Jetzt Wille wird mein Anrufer ändern
Region china = dock.getShipmentDetailsForRegion ("region")
Jetzt möchte ich nicht fest einprogrammierte String-Werte in Code einzuführen, da diese Änderung meiner Anrufer beeinflusst Klasse und jetzt ist es die Verantwortung der Anrufer-Klasse, um die richtige Reion zu übergeben, zuvor Dock ausgesetzt Methode für Regionen nur unterstützt.
Gibt es einen Weg zur Kompilierzeit ich muss nicht hardcoded Zeichenfolge verwenden.
Sie können nur Konstanten aus Eigenschaftendateien zur Laufzeit laden, Keine Kompilierzeit beim Laden erlaubt – Sanjeev