Singletonとは?
「Singleton(シングルトン)」はデザインパターンの一種です。「Singleton(シングルトン)パターン」と呼ばれることもあります。 「あるクラスのインスタンスが常にたった1つしか存在していない」という状態を実現したいときに利用されます。
あるクラスについて「複数のインスタンスが作られると困る」場面があれば、Singletonパターンを使用する。
※全機能で使用するキャッシュ保持など
Singletonの構成
Singleton#getInstance( )でインスタンスを取得することができる。
①インスタンスを保持する内部クラス
/**
* Configクラスの唯一のインスタンスを保持する内部クラス
*/
public static class ConfigInstanceHolder {
/** 唯一のインスタンス */
private static final Config INSTANCE = new Config();
}
}
②インスタンス取得
/**
* 唯一のインスタンスを返す
* @return このクラスの唯一のインスタンス
*/
public static Config getInstance() {
return ConfigInstanceHolder.INSTANCE;
}
③コンストラクタ
ここでメインの処理を書く!
(DBから取得したデータからキャッシュを生成する処理など。例えばここからキャッシュ取得用のservice呼び出したり。)
/**
* 外部からインスタンス化できないよう、コンストラクタをprivateで宣言する
*/
private Config() {
// 実際はファイル・データベースなどから設定情報を
// 読み込む処理をここに書く
}
④設定情報
外部クラスからgetInstance()してこのメソッドが呼び出せる。
(特有のIDやハッシュ化した回数など呼び出せたり)
/**
* 指定されたキーに対応する設定値を返す
* @param key 設定キー
* @return 設定値
*/
public String getValue(String key) {
// 実際はコンストラクタで読み込んだ設定情報を
// 返す処理をここに書く
return ....;
}