設計模式 單例(Singleton)

2021-09-01 05:37:22 字數 965 閱讀 2135

單例設計模式屬於建立型模式,它提供了一種建立物件的最佳方式。

這種模式涉及到乙個單一的類,該類負責建立自己的物件,同時確保只有單個物件被建立。這個類提供了一種訪問其唯一的物件的方式,可以直接訪問,不需要例項化該類的物件。

主要解決:乙個全域性使用的類頻繁地建立與銷毀。

何時使用:當您想控制例項數目,節省系統資源的時候。

如何解決:判斷系統是否已經有這個單例,如果有則返回,如果沒有則建立。

關鍵**:建構函式是私有的。

使用場景:1、建立的乙個物件需要消耗的資源過多,比如 i/o 與資料庫的連線等。。2、web 中的計數器,不用每次重新整理都在資料庫裡加一次,用單例先快取起來。

優點:1、在記憶體裡只有乙個例項,減少了記憶體的開銷,尤其是頻繁的建立和銷毀例項(比如管理學院首頁頁面快取)。 2、避免對資源的多重占用(比如寫檔案操作)。

缺點:沒有介面,不能繼承,與單一職責原則衝突,乙個類應該只關心內部邏輯,而不關心外面怎麼樣來例項化。

單例模式的三個要點:

(1) 需要乙個儲存類的唯一例項的靜態成員變數

(2)建構函式和轉殖函式必須宣告為私有的,防止外部程式new類從而失去單例模式的意義

(3)必須提供乙個訪問這個例項的公共的靜態方法(通常為getinstance方法),從而返回唯一例項的乙個引用 

class single

// 私有化轉殖方法

private function __clone()

//公有化獲取例項方法

public static function getinstance()

return self::$_instance;

}}

設計模式 單例Singleton

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

單例設計模式(singleton)

單例設計模式的概念 作為物件建立模式,檔裡模式確保某個類只有乙個例項物件,而且自行建立例項並向整個系統提供這個例項。這個類稱為單例類!單例模式的提點 1,單例類只能有乙個例項 2,單例類的唯一例項必須自己建立 3,單例類必須向系統提供這個唯一的例項 餓漢單例類 public class eagers...

設計模式 單例Singleton

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