終極奧義:該類負責建立自己的物件,同時確保只有單個物件被建立。
特點:單例類只能有乙個例項。
單例類必須自己建立自己的唯一例項。
單例類必須給所有其他物件提供這一例項。
優點:避免頻繁物件的建立和銷毀,減少記憶體開銷。
避免對資源的多重占用(比如寫檔案操作)。
缺點:沒有介面,不能繼承,與單一職責原則衝突。
應用場景:
建立的乙個物件需要消耗的資源過多,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...