java設計模式之單例模式

2021-08-20 01:32:57 字數 1430 閱讀 4205

定義:在乙個應用程式中單列模式的類有且只有乙個例項,單列模式中又分為兩種,餓漢模式和懶漢模式。

定義:餓漢模式,是在類載入的時候便建立例項,所謂餓漢,即表示這個類很飢渴,需要快速得到類的例項,所以在類加                      載的時候便會產生類的例項。

實現方式:

1.將類預設的構造方法私有化,讓外部不能直接new乙個例項。

2.在類的內部建立該類的例項,該例項靜態私有化。

3.提供乙個靜態的get方法,返回內部靜態類的例項。

當我們需要得到這個類的例項時,直接呼叫這個類的getone的靜態方法便可得到該類的例項,由於是靜態的,所以在類             載入的時候便會建立該類的例項。

定義:在載入的時候並不會建立該類的例項,而是只有在執行期外部呼叫該類的時候,才會建立該類的例項。所謂懶漢                        模式,表明它很懶,你不用,我就不會建立,只有在你需要用時,我才會建立。

實現方式:

1.預設的構造方法私有化,和餓漢模式的第一步一樣的。

2.私有化乙個該類修飾的成員變數,但是並不會去建立該類的例項。

3.提供乙個公共的get方法,在方法裡面,首先判斷成員變數是不是為空,如果為空,則去new 乙個例項,如果不為                      空,則直接放回。作用,防止建立多個例項。

相同:     

1.在乙個應用程式中都是只能建立類的乙個例項。

2.都是將構造方法私有化,在類的內部建立類的例項。

不同:1.餓漢模式是在類載入時建立例項,而懶漢模式是在執行期需要要呼叫該類的例項時才建立。

2.由於第一點,所以餓漢模式在類載入的時候比較慢,懶漢模式在執行時比較慢。

3.餓漢模式是屬於執行緒安全的。懶漢模式執行緒不安全。因為在多執行緒情況下,有可能存在多個執行緒同時 

去建立類的實列,所以在多執行緒情況下最後使用餓漢模式

優點: 執行緒安全,延遲載入,序列化與反序列化安全,反射安全。

package com.test;

public enum three

public void setname(string name)

public static void main(string args)

}

java設計模式之單例模式

單位面試題目中有一道關於單例模式的題目.大多數參加筆試的同事都會寫出getinstance這個函式,但是當我問起什麼情況下需要使用單例 單例具體有什麼好處的時候 static函式也可以構建唯一例項,為什麼還需要單例.從使用單例的經驗來看,如下場景下,個人感覺應該使用單例 1.如果需要構建乙個工具類,...

java設計模式 之 單例模式

單例模式 有些類在程式執行過程中只需要儲存乙個例項,比如檔案管理類,音訊管理類,那麼我們如何實現乙個單例類呢?有以下幾點 1 定義乙個靜態變數 2 建構函式私有化 3 提供乙個public 靜態方法,獲取這個例項 4 一定要做執行緒同步 public static class singleton p...

Java設計模式之單例模式

說到單例模式 大家一定非常熟悉 這是最常見也是設計模式中相對簡單 好理解的設計模式 今天就跟大家掰一掰單例模式 單例模式確保某個類只有乙個例項 應用場景 執行緒池 快取 等物件常常被設計成單例 然而單例分兩種 1 惡漢式 2 懶漢式 我們先來看下 惡漢式 public class singleton...