以下方式均不推薦開發(fā)使用,僅供學(xué)習(xí)
package singleton;
/**
* 餓漢式(靜態(tài)常量)
*/
public class Singleton_1 {
// 1. 私有化構(gòu)造器
private Singleton_1() {}
// 2. 本類內(nèi)部創(chuàng)建靜態(tài)常量型實(shí)例
private final static Singleton_1 instance = new Singleton_1();
// 3. 對(duì)外提供公有的獲取實(shí)例方法
public static Singleton_1 getInstance() {
return instance;
}
}
package singleton;
/**
* 餓漢式(靜態(tài)代碼塊)
*/
public class Singleton_2 {
// 1. 私有化構(gòu)造器
private Singleton_2() {}
// 2. 靜態(tài)變量
private static Singleton_2 instance;
static {
instance = new Singleton_2();
}
// 3. 對(duì)外提供公有的獲取實(shí)例方法
public static Singleton_2 getInstance() {
return instance;
}
}
優(yōu)點(diǎn)
- 實(shí)現(xiàn)簡(jiǎn)單,避免了線程同步問題
缺點(diǎn)
- 在類裝載時(shí)就完成了實(shí)例化,達(dá)不到懶加載(lazy loding)的效果,如果這個(gè)類從始至終都沒有使用過,將會(huì)造成內(nèi)存浪費(fèi)