顧名思義,單例模式就是指乙個類在記憶體中只有乙個物件 。常見的單例模式:餓漢式,懶漢式,靜態內部類,還有一種不常見的利用列舉來實現;
餓漢式:在類載入時就建立好了物件;優點:多執行緒安全(類載入機制保證),不用加鎖效率高;缺點:不管是否用到,該物件都已建立,浪費記憶體:
public class singleton //構造方法私有化
public static singleton getinstance()
}
懶漢式:什麼時候用到,什麼時候建立,涉及執行緒同步,建立較繁瑣,效率偏低:
下面這種寫法比較完善:
public class singleton2
public static singleton2 getinstance()
}} return singleton;
}}
靜態內部類:通過靜態內部類的方式實現單例(懶載入),解決了浪費記憶體,不涉及執行緒安全問題,避免申請鎖效率低的問題:
public class singleton3
//外部類載入時,靜態內部類不載入,只有內部類被用到時才載入
static class singleinner
public static singleton3 getinstance()
}
列舉:解決執行緒同步,還可以防止反序列化(不常見):
public enum singleton4
單例模式 單例模式
餓漢式 急切例項化 public class eagersingleton 2.宣告靜態成員變數並賦初始值 類初始化的時候靜態變數就被載入,因此叫做餓漢式 public static eagersingleton eagersingleton new eagersingleton 3.對外暴露公共的...
單例 單例模式
簡單的實現乙個單例 instancetype sharedinstance return instance 真正的單例模式 myclass sharedinstance return instance id allocwithzone nszone zone return nil id copywi...
單例模式 懶漢式單例模式
單例模式有餓漢時模式和懶漢式 單例模式也就是說同一類只返回乙個物件供外部類使用 懶漢式即延遲初始化單例。在多執行緒環境下,簡單的懶漢式會有執行緒安全。懶漢式單例模式解決線性安全問題如下 1 使用雙重檢查鎖機制解決執行緒安全問題。2 單例模式還有更好的解決方案,即使用靜態類方式。懶漢式單例模式典型 p...