ディレクトリ
シングルトン
いずれの例そのインスタンスを1つだけ確実にするために、
空腹中国風
public class Singleton {
//在类被加载的时候运行一次,这是本类构造函数的唯一一次使用。
//未被使用之前就已经实例化完成,称为饿汉式
private static Singleton singleton = new Singleton();
//构造函数为私有的,只有本类才能构造实例
private Singleton() {
System.out.println("生成了一个Singleton实例");
}
//外界只能通过唯一的getInstance方法获得这个唯一的实例
public static Singleton getInstance() {
return singleton;
}
}
長所:シンプル、無スレッド同期の問題。
短所:例としては、常に、スペースの無駄をメモリを占有します。
レイジースタイル
public class Singleton2 {
private static Singleton2 instance;
private Singleton2() {}
public static Singleton2 getInstance() {
//在别人需要的时候才开始实例化
if(instance == null) {
instance = new Singleton2();
}
return instance;
}
}
利点:時間のニーズに遅延インスタンスは、メモリ空間を無駄にしないでください。
短所:スレッドセーフで
スレッドセーフな怠惰なスタイル
public class Singleton3 {
private static Singleton3 instance;
private Singleton3() {}
public static Singleton3 getInstance() {
if(instance == null) {
//需要时创建,并且只对关键代码块加锁,保证性能
synchronized (Singleton3.class) {
if (instance == null) {
instance = new Singleton3();
}
}
}
return instance;
}
}
長所:繰延負荷、省スペース、スレッドセーフ取る
短所を:トラブル