設計模式1 單例模式

2021-07-05 03:50:07 字數 2584 閱讀 1771

保證乙個類只有乙個例項--即乙個物件,

並且提供乙個訪問該例項的全域性訪問點--即類中有乙個公共的方法--方法的返回該類的物件。

1.windows的任務管理器;--無論開啟多少次都只能開啟乙個視窗

2.windows的**站;

3.專案中的配置檔案;

4.**的計數器;

5.日誌;

6.連線池;

8.spring的bean--預設是單例

9.servlet

10.springmvc和struts2中,控制器物件

只生成乙個例項--減少了系統的效能開銷

1.餓漢式--常用;執行緒安全、呼叫效率高、不能延時載入--缺點。

2.懶漢式--常用;執行緒安全、呼叫效率低、延時載入。

3.雙重檢測鎖式--少用--執行緒安全、呼叫效率高、延時載入、偶爾出現問題--不建議使用。

4.靜態內部類式--少用;執行緒安全、呼叫效率高、延時載入。(也是一種懶載入方式)。

5.列舉單例式--少用;執行緒安全、呼叫效率高、不能延時載入、實現簡單--列舉本身就是單例模式。

package org.yxd.create;

/* * 專案名稱:designmode--設計模式學習

* 包名:org.yxd.create--建立型模式

* 類名:singletondemo1--單例模式之餓漢式

*/public class singletondemo1

//方法沒有同步,呼叫效率高

public static singletondemo1 getinstance()

}

1.私有的、static的類物件

2.私有的構造器

3.乙個共有的、static的方法--返回類的物件。

package org.yxd.create;

/* * 專案名稱:designmode--設計模式學習

* 包名:org.yxd.create--建立型模式

* 類名:singletondemo1--單例模式之懶漢模式

*/public class singletondemo2

//方法同步,呼叫效率低

public static singletondemo2 getinstance()

return instance;

}}

1.私有的、static的類物件--不new

2.私有的構造器

3.乙個共有的、static的方法--返回類的物件。--同步

package org.yxd.create;

/* * 專案名稱:designmode--設計模式學習

* 包名:org.yxd.create--建立型模式

* 類名:singletondemo3--單例模式之雙重檢測鎖

*/public class singletondemo3

//方法同步在if中,呼叫效率高,但有時會出問題,不建議使用

public static singletondemo3 getinstance()

}instance=sc;}}

} return instance;

}}

區別:

雙重檢測鎖與懶漢式的差別--將同步移動到if中,同時if中有兩sycnronized。

優勢:安全、高效、延遲載入。

問題原因:

1.編譯器優化

2.jvm底層內部模型

問題結果:

偶爾會出現問題。

package org.yxd.create;

/* * 專案名稱:designmode--設計模式學習

* 包名:org.yxd.create--建立型模式

* 類名:singletondemo4--單例模式之靜態內部類

*/public class singletondemo4

//構造方法

private singletondemo4(){}

//呼叫該方法,載入靜態內部類

public static singletondemo4 getinstance()

}

區別:

1.沒有static屬性--使用了內部類的屬性--不會立即載入

優勢:安全、高效、延遲載入。

package org.yxd.create;

/* * 專案名稱:designmode--設計模式學習

* 包名:org.yxd.create--建立型模式

* 類名:singletondemo5--單例模式之列舉模式

*/public enum singletondemo5

}

區別:1.使用列舉--本身就是單例

優勢:簡單、安全、高效

問題:立即載入。

占用占用少、不需要延時載入:

列舉好於  餓漢式

占用資源多,需要延時載入:

靜態內部類好於  懶漢式

設計模式1 單例模式

文章引用出處 singleton模式是最簡單最常用的設計模式。1,定義 確保某個類只有乙個例項,而且自行例項化並向整個系統提供這個該類。2,單例模式優點 1 單例模式在記憶體中只有乙個例項,減少了記憶體的開支。2 單例模式只生成乙個例項模式,減少了系統效能的開銷。如當乙個物件的產生需要比較多的系統資...

設計模式1 單例模式

單例模式,利用工廠類只生產乙個例項或者有限個例項,比如乙個系統中只有乙個主機板,乙個顯示卡,但是有些系統中也可以存在多個,雙顯示卡,雙顯示器等等。這些在singleton module中都是可以定義的。當然我們也可以使用全域性的變數或者靜態類或者物件去做,但是單例模式的存在是有其優點的。public...

設計模式 單例模式 1

上三篇文章都是在講工廠模式,這篇就跟吉哥一起學習最常用的模式 單例模式。概念 在它的核心結構中只包含乙個被稱為單例的特殊類。分類 單例模式的形式也比較多,包涵以下8種 這裡是把懶漢和餓漢細分了 1 餓漢式 靜態常量 2 餓漢式 靜態 塊 3 懶漢式 不加鎖,執行緒不安全 4 懶漢式 同步方法,執行緒...