單例設計模式

2021-10-02 02:08:45 字數 1800 閱讀 8259

singleton 單例設計模式,即某個類在整個系統中只能有乙個例項物件可被獲取和使用的**模式。

一、某個類只能有乙個例項:構造器私有化

二、它必須自行建立這個例項:含有乙個該類的靜態變數來儲存這個唯一的例項。

三、必須自行向整個系統提供這個例項:

對外提供獲取該例項物件的方式:

1)直接暴露 2)用靜態變數的get方法獲取

直接例項化餓漢式(簡潔直觀)

列舉式(最簡潔)

靜態**塊餓漢式(適合複雜例項化)

二、懶漢式:延遲建立物件
執行緒不安全(適用於單執行緒)

執行緒安全(適用於多執行緒)

靜態內部類形式(適用於多執行緒)

直接上例子:

首先餓漢式,直接例項化餓漢式:

/** 懶漢式

* 在類初始化時直接建立例項物件,不管你是否需要這個物件都會建立

* 1)構造器私有化

* 2)自行建立,並且使用靜態變數儲存

* 3)向外提供這個例項

* 4)強調這是乙個單例,我們可以用final修飾

*/public class singleton1

}

列舉型別

/**簡介型:列舉型別

* 表示該型別的物件是有限的幾個

* 我們可以限定為乙個,就成了單例

*/public enum singleton2

靜態**塊式

/**靜態**塊的狀態

* 運用在配置檔案中

*/public class singleton3 catch (ioexception e)

}private singleton3(string info)

public string getinfo()

public void setinfo(string info)

@override

public string tostring() ';

}}

懶漢式

/**懶漢式:

* 1)構造器私有化

* 2)用乙個靜態儲存這個唯一的例項

* 3)提供乙個靜態方法,獲取這個例項物件

*/public class singleton4

public static singleton4 getinstance()

return instance;

}}

public class singleton5 

public static singleton5 getinstance() catch (interruptedexception e)

instance = new singleton5();}}

}return instance;

}}

懶漢式:簡潔的執行緒安全

/**在內部類被載入初始化時,才建立instacne例項物件

* 靜態內部類不會自動隨著外部類的載入初始化而初始化,他是要單獨去載入和初始化的。

* 因為是在內部類載入和初始化時,建立的,因此是執行緒安全的

* @author zhangxinxin

*/public class singleton6

private static class inner

public static singleton6 getinstance()

}

單例設計模式(餓漢單例設計模式 懶漢單例設計模式)

1.什麼是單例 單例的意思是乙個類永遠只存在乙個物件,不能建立多個物件。2.為什麼要用單例 開發中有很多的物件我們只需要乙個,例如虛擬機器物件,任務管理器物件 物件越多越佔記憶體,有時候只需要乙個物件就可以實現業務,單例可以節省記憶體空間。3.如何實現單例 單例的實現方式有 餓漢單例設計模式 通過類...

設計模式 單例設計模式

歷史 最早是建築學領域的模式,然後gof四人由其引申到編碼方面,總結了23種設計模式 設計模式 解決某一類事情最行之有效的方法 2.1 體現 餓漢式,保證物件的唯一性 class singleton 私有化建構函式禁止該類建立物件 private static singleton st new si...

設計模式 單例設計模式

單例模式,是一種常用的軟體設計模式。在它的核心結構中只包含乙個被稱為單例的特殊類。通過單例模式可以保證系統中乙個類只有乙個例項。即乙個類只有乙個物件例項 單例模式的要點有三個 一是某個類只能有乙個例項 二是它必須自行建立這個例項 三是它必須自行向整個系統提供這個例項。單例設計模式 解決的問題 可以保...