單例設計模式(singleton)

2021-07-05 05:20:26 字數 1278 閱讀 2387

單例設計模式的概念

作為物件建立模式,檔裡模式確保某個類只有乙個例項物件,而且自行建立例項並向整個系統提供這個例項。這個類稱為單例類!

單例模式的提點

1,單例類只能有乙個例項

2,單例類的唯一例項必須自己建立

3,單例類必須向系統提供這個唯一的例項

餓漢單例類

public class eagersingleton 

//靜態工廠方法

public static eagersingleton getinstance()

}

餓漢單例模式是典型的以空間換時間,在類載入時就建立出來,不管你用不用。在隨後的工廠方法中就不需要做判斷,節省了執行的時間。

懶漢單例類

public class lazysingleton 

public static lazysingleton getinstance()}}

return instance;

}}

懶漢單例模式是典型的時間換空間,每次獲取例項都會進行判斷,是否需要建立例項,浪費判斷的時間。當然如果一直沒有呼叫此方法,則例項不會建立,節省空間。

新增乙個持有單例例項的類內部類物件方法

囉嗦幾個小知識點:1,類內部類是有static修飾的成員內部類。

2,類級內部類相當於外部類的static成分,不存依賴關係。

3,類級內部類相當於外部類的成員變數,只有在第一次使用時才會被載入。

public class singletonwithholder 

public static singletonwithholder getinstance()

}

當客戶端第一次呼叫getinstance()時,singletonholder.instance第一次被讀取,導致singleholder初始化,會在靜態域建立singlewithholder例項。虛擬機器只會

載入靜態域一次,虛擬機器保證了它的執行緒安全。此方法延遲初始化,並沒有增加任何成本!

列舉單例

單元素的列舉型別已經成為實現singleton的最佳方法。

public enum emunsingleton 

}

設計模式 單例Singleton

定義 確保某乙個類只有乙個例項,而且自行例項化並向整個系統提供這個例項。使用場景 確保某個類有且只有乙個物件的場景,例如建立乙個物件需要消耗的資源過多,如要訪問 io 和資料庫等資源。以earth為例,簡單的單例模式可以寫成如下形式。public class earth public earth g...

設計模式 單例Singleton

若是你希望自己寫的程式中的某個類只能有乙個相對應的例項,那麼這個時候就要用到單例模式了。單例模式是一種非常常見的設計模式,實現方法有好幾種,下面將一一介紹 1.懶漢式 public class singleton public static singleton getinstance return ...

設計模式 單例(Singleton)

單例設計模式屬於建立型模式,它提供了一種建立物件的最佳方式。這種模式涉及到乙個單一的類,該類負責建立自己的物件,同時確保只有單個物件被建立。這個類提供了一種訪問其唯一的物件的方式,可以直接訪問,不需要例項化該類的物件。主要解決 乙個全域性使用的類頻繁地建立與銷毀。何時使用 當您想控制例項數目,節省系...