私はxmlを受け取るjavaアプリケーションで作業していますが、xmlには世界中の多くの領域のデータが含まれています。だからxmlはこのように見えるプロパティファイルからコンパイル時定数をロードする
<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>
私たちはDockと呼ばれる1つのpojoを持っています。
このxmlから領域を抽出して領域オブジェクトを作成し、Dockオブジェクトに追加します。 ここでは、アプリケーションでサポートされているすべてのものを定義する列挙型も維持しています。
enum SupportedRegions{
CHINA (201, "APAC"),
RUSSIA (202, "EUR")
}
ここで、他の領域もサポートする必要があります。サポートチームによって地域をサポートするのが簡単になり、構成可能になるように、コードをリファクタリングしたいと考えています。
最小限の変更でコードを移動してプロパティファイルに保存したいと考えています。 私たちはいくつかの呼び出しコードを持っています。
dock.getChinaShipmentDetails()
dock.getRussiaShipmentDetails().
ここで、私は列挙型を削除し、プロパティ内のすべての領域を移動します。私は今、私の発信者の意志はこの変更は、私の発信者に影響を与えるので、私は、コード内にハードコーディングされた文字列値を紹介したいいけない今
Region china = dock.getShipmentDetailsForRegion ("region")
となり、この
private Map<String, Region> regionalShipmentDetails = //
//some field and getter setter.
getShipmentDetailsForRegion (String region) { this.regionalShipmentDetails.get(region)
}
}
のようなものに私のドッククラスを変更する必要があります以前はDockがサポートしていたメソッドのfore領域だけを公開していました。
ハードコードされた文字列を使用する必要はありません。
実行時にプロパティファイルからのみ定数を読み込むことができます。コンパイル時の読み込みを許可しません。 – Sanjeev