1.Singletonの概要
単一のトランザクションコンテキスト内で一度だけインスタンス化する。
ガバナー制限及びリソースの多重使用を避ける。
主なポイント:
・コンストラクタを private とする
・Singletonインスタンス変数宣言および初期化
・Singletonインスタンス取得用公開メソッド
2.実装例
Apex に static 変数の life cycle はトランザクションです。
java のように synchronized を考慮しなくても大丈夫です。
Singletonインスタンスの初期化は2つの方法があります。
・eager-initialization
・lazy-initialization
eager-initialization
public class Singleton {
private static Singleton instance = new Singleton();
private Singleton (){}
public static Singleton getInstance() {
return instance;
}
}
lazy-initialization
public class Singleton {
private static Singleton instance;
private Singleton (){}
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}