0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Singletonについて

Posted at

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 ....;
}
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?