單例模式及其應用

2021-09-13 04:11:51 字數 1360 閱讀 4382

終極奧義:該類負責建立自己的物件,同時確保只有單個物件被建立。

特點:單例類只能有乙個例項。

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

單例類必須給所有其他物件提供這一例項。

優點:避免頻繁物件的建立和銷毀,減少記憶體開銷。

避免對資源的多重占用(比如寫檔案操作)。

缺點:沒有介面,不能繼承,與單一職責原則衝突。

應用場景:

建立的乙個物件需要消耗的資源過多,io流操作檔案或者是資料庫連線

spring的bean預設載入方式

靜態常量(餓漢式)

public class singletonone 

public static singletonone getsingleton()

}

靜態**塊(餓漢式)

public class singletontwo 

private singletontwo()

public static singletontwo getsingletontwo()

}

雙重檢測(懶漢式)

public class singletonthree 

public static singletonthree getsingletonthree() }}

return singletonthree;}}

靜態內部類(類似於餓漢式,但是實現懶載入)

public class singletonfour 

public static class singleton

public static singletonfour getsingletonfour()

}

列舉

public class singletonfive 

public static singletonfive getsingletonfive()

private enum singleton

public singletonfive getsingletonfive() }}

實現測試(物件相等其對應的hashcode一定相等)

public class mutithread extends thread 

}

public class test 

}

效果:

單例模式及其應用

所謂單例,指的就是單例項,有且僅有乙個類例項,這個單例不應該由人來控制,而應該由 來限制,強制單例。單例有其獨有的使用場景,一般是對於那些業務邏輯上限定不能多例只能單例的情況,例如 類似於計數器之類的存在,一般都需要使用乙個例項來進行記錄,若多例計數則會不準確。其實單例就是那些很明顯的使用場合,沒有...

多個單例模式單例模式的應用

我們在程式設計中需要乙個單例,但不僅僅是乙個單例,更多的是需要單例中的單例 即 類a為控制器,類b為例項面板 為方便找到類a,採用單例,而類a為方便找到類b,採用單例中的單例 單例a 單例b 第二個不要用new a.getinstance b.呼叫方法 import b public class a...

多個單例模式單例模式的應用

我們在程式設計中需要乙個單例,但不僅僅是乙個單例,更多的是需要單例中的單例 即 類a為控制器,類b為例項面板 為方便找到類a,採用單例,而類a為方便找到類b,採用單例中的單例 單例a 單例b 第二個不要用new a.getinstance b.呼叫方法 import b public class a...