2015年6月21日日曜日

[業務ロジック][機能単位][実装][サービス]PropUtil

 前述したServiceParameterクラスで使う、プロパティユーティリティ。ログ出力先など、プロパティファイルとして内容を管理すべき事項がある場合、プロパティファイルにアクセスできるようにユーティリティクラス化されている。プロパティファイルを読むだけであるため、シングルトンクラスとしている。
 シングルトンクラスを使う場合は、静的領域にあるクラスはガベージコレクションの対象にならないことに注意する。静的クラスがマップやリストを持っており、そこのマップやリストが更に別のマップやリストの一部となっている場合、階層配下のものも含めて全てシングルトンクラスが使っている状態と判断され、通常ならばガベージコレクションでメモリが解放されるところ、いつまでもメモリが解放されずに OutOfMemoryException を起こすことになる。
 原則として静的領域にマップやリストなどを持たない、必要以上にシングルトンなどの静的クラスを作らないことが重要である。

package util;

/**
 * プロパティユーティリティ
 */
public class PropUtil {

    /** プロパティ */
    private static Prop prop;

    /**
     * アプリケーションプロパティから値を取得します。
     *
     * @param key
     *            キー
     * @return アプリケーションプロパティの値
     */
    public static String get(String key) {
        if (prop == null) {
            prop = new Prop("metaedit.properties");
        }
        return prop.get(key);
    }

    /**
     * シングルトンのためのプライベートコンストラクタです。
     */
    private PropUtil() {
    }
}

0 件のコメント:

コメントを投稿