(1) 直接載入,無論是否需要,只要類被虛擬機器載入,這個單例就存在
private static directsingleton directsingleton = new directsingleton();
public static directsingleton getinstance()
}
這種方法的缺點是無法實現延遲載入,如果單例的建立過程很慢,而這個類除了建立單例以外還做了別的事情的話,可能導致所有用到這個單例類的地方都在建立單例而不管這個單例物件是否被用到。
(2)一種實現延遲載入的方式是在使用的時候建立單例物件,但是需要確保單例物件只被建立一次,因而需要使用synchronized關鍵字
public class lazysingletonusesynchronize
private static lazysingletonusesynchronize lazysingleton = null;
public static synchronized lazysingletonusesynchronize getinstance()
return lazysingleton;
}}
public class lazysingletonuserinnerclass
private static class lazysingletoninnerclass
public static lazysingletonuserinnerclass getinstance()
public static void main(string args)
}
設計模式 單例模式的幾種建立方式
ensure a class has only one instance,and provide a global point of access to it.確保某乙個類只有乙個例項,而且自行例項化並向整個系統提供這個例項 建立方式分為餓漢式 懶漢式 雙重檢查 靜態內部類 列舉等。靜態屬性建立 採...
實現單例的幾種方式
面試 你懂什麼是分布式系統嗎?redis分布式鎖都不會?餓漢式單例 在使用該類的靜態成員時,無論有沒有使用單例類,都會建立單例物件 餓漢式單例 在使用該類的靜態成員時,無論有沒有使用單例類,都會建立單例物件 author wangpeng public class singleton public ...
單例模式的幾種方式
學習設計模式有一段時間了,今天恰好用到了單例,而且單例模式比較常用,面試常考,比較重要。為了方便我不再一步一步詳細的解釋,下面只是給出幾種常用的用法 public class singleton public static singleton getinstance public class sin...