導航:首頁 > 編程語言 > 什麼是單例模式java

什麼是單例模式java

發布時間:2023-01-28 17:44:18

A. 什麼是單例模式

單例模式,是一種常用的軟體設計模式。在它的核心結構中只包含一個被稱為單例的特殊類。
拓展:
1、單例模式的要點:一是某個類只能有一個實例;二是它必須自行創建這個實例;三是它必須自行 向整個系統提供這個實例。
2、單例模式優缺點:
優點:一、實例控 二、靈活性
缺點:一、開銷 二、可能的開發混淆 三、對象生存期
3、單例模式是設計模式中最簡單的形式之一。這一模式的目的是使得類的一個對象成為系統中的唯 一實例。要實現這一點,可以從客戶端對其進行實例化開始。因此需要用一種只允許生成對象類 的唯一實例的機制,「阻止」所有想要生成對象的訪問。使用工廠方法來限制實例化過程。這個 方法應該是靜態方法(類方法),因為讓類的實例去生成另一個唯一實例毫無意義。

B. java中什麼是單例模式

顯然單例模式的要點有三個;一是某個類只能有一個實例;二是它必須自行創建這個實例;三是它必須自行向整個系統提供這個實例。舉個例子windows回收站就是單例模式

C. java中單態模式或單例模式(Singleton)有什麼意義

網路中這樣回答
單態模式,即Singleton模式主要作用是保證在面向對象編程語言設計編寫的程序中,一個類Class只有一個實例存在。
這兩個是一個意思。

D. 什麼是單立模式(JAVA)或概念

java模式之單例模式:
單例模式確保一個類只有一個實例,自行提供這個實例並向整個系統提供這個實例。
特點:
1,一個類只能有一個實例
2,自己創建這個實例
3,整個系統都要使用這個實例
例: 在下面的對象圖中,有一個"單例對象",而"客戶甲"、"客戶乙" 和"客戶丙"是單例對象的三個客戶對象。可以看到,所有的客戶對象共享一個單例對象。而且從單例對象到自身的連接線可以看出,單例對象持有對自己的引用。

Singleton模式主要作用是保證在Java應用程序中,一個類Class只有一個實例存在。在很多操作中,比如建立目錄 資料庫連接都需要這樣的單線程操作。一些資源管理器常常設計成單例模式。
外部資源:譬如每台計算機可以有若干個列印機,但只能有一個Printer Spooler,以避免兩個列印作業同時輸出到列印機中。每台計算機可以有若干個通信埠,系統應當集中管理這些通信埠,以避免一個通信埠被兩個請求同時調用。內部資源,譬如,大多數的軟體都有一個(甚至多個)屬性文件存放系統配置。這樣的系統應當由一個對象來管理這些屬性文件。
一個例子:Windows 回收站。
在整個視窗系統中,回收站只能有一個實例,整個系統都使用這個惟一的實例,而且回收站自行提供自己的實例。因此,回收站是單例模式的應用。
兩種形式:
1,餓漢式單例類
public class Singleton {
private Singleton(){}
//在自己內部定義自己一個實例,是不是很奇怪?
//注意這是private 只供內部調用
private static Singleton instance = new Singleton();
//這里提供了一個供外部訪問本class的靜態方法,可以直接訪問
public static Singleton getInstance() {
return instance;
}
}
2,懶漢式單例類
public class Singleton {
private static Singleton instance = null;
public static synchronized Singleton getInstance() {
//這個方法比上面有所改進,不用每次都進行生成對象,只是第一次

//使用時生成實例,提高了效率!
if (instance==null)
instance=new Singleton();
return instance; }
}

第二中形式是lazy initialization,也就是說第一次調用時初始Singleton,以後就不用再生成了。

注意到lazy initialization形式中的synchronized,這個synchronized很重要,如果沒有synchronized,那麼使用getInstance()是有可能得到多個Singleton實例。
一般來說第一種比較安全。

E. JAVA問題:singleton是什麼意思

是java開發中常用設計模式的一種。java的設計模式有一百多種常用的有23種。就單例模式(也叫單漢模式)來說有餓漢、懶漢之分。它們的區別是前者不考慮線程直接通過靜態方法返回對象,而後者反之。

F. 單例模式的作用及創建方法

單例模式作為常見的設計模式之一,在java的項目開發中會時常的用到。Java Singleton模式即保證在JVM運行時,一個類Class只有一個實例存在。

單例模式有什麼好處呢?
最簡單的一個例子就是網站計數器的設計了。當我們想要統計當前網站的在線人數時,一個顯而易見的問題就是並發所帶來的線程安全問題,當我們對這個計數器(網站人數)在同一時刻進行操作,再保存計數時就會造成數據的混亂,後者覆蓋前者的結果。一種解決方案就是把這個計數器設置為唯一對象,所有人都必須共用同一份數據。
實現唯一對象最好的解決辦法就是讓類自己負責保存它的唯一實例,並且讓這個類保證不會產生第二個實例,同時提供一個讓外部對象訪問該實例的方法。自己的事情自己辦,而不是由別人代辦,這非常符合面向對象的封裝原則。

單例模式的三個特點:

只有在自身需要的時候才會行動,從來不知道及早做好准備。它在需要對象的時候,才判斷是否已有對象,如果沒有就立即創建一個對象,然後返回,如果已有對象就不再創建,立即返回。

該方法在多線程情況下有可能重復創建實例,以下是線程安全的懶漢模式

這種模式的缺點是加鎖造成了效率下降,並且在絕大部分情況下是不需要同步的。使用雙重檢驗鎖(DCL),只在第一次初始化的時候進行同步加鎖

該方式在類載入的時候就被實例化了。

這種方式同樣利用了classloder的機制來保證初始化instance時只有一個線程,它跟餓漢不同的是(很細微的差別):餓漢方式是只要Singleton類被裝載了,那麼instance就會被實例化(沒有達到lazy loading效果),而這種方式是Singleton類被裝載了,instance不一定被初始化。因為SingletonHolder類沒有被主動使用,只有顯式通過調用getInstance方法時,才會顯示裝載SingletonHolder類,從而實例化instance。

想像一下,如果實例化instance很消耗資源,我想讓它延遲載入,另外一方面,我不希望在Singleton類載入時就實例化,因為我不能確保Singleton類還可能在其他的地方被主動使用從而被載入,那麼這個時候實例化instance顯然是不合適的。這個時候,這種方式就顯得很合理。

關於類載入情況下單例模式,如果單例由不同的類裝載器裝入,那便有可能存在多個單例類的實例。假定不是遠端存取,例如一些servlet容器對每個servlet使用完全不同的類 裝載器,這樣的話如果有兩個servlet訪問一個單例類,它們就都會有各自的實例。修復的辦法是

G. 什麼是單例為什麼要使用單例

單例模式就是java中一個類只存在一個實例對象,不能被無限制的new,常見的單例模式有懶漢模式,餓漢模式和登記式模式。單例模式首先可以節省內存,其次可以控制資源的並發問題,還可以實現數據共享,

閱讀全文

與什麼是單例模式java相關的資料

熱點內容
蘋果平板如何開啟隱私單個app 瀏覽:700
空調壓縮機一開就停止 瀏覽:526
如何下載虎牙app 瀏覽:847
日語年號的演算法 瀏覽:955
dev裡面的編譯日誌咋調出來 瀏覽:298
php函數引用返回 瀏覽:816
文件夾和文件夾的創建 瀏覽:259
香港加密貨幣牌照 瀏覽:838
程序員鼓勵自己的代碼 瀏覽:393
計算機網路原理pdf 瀏覽:752
吃雞國際體驗服為什麼伺服器繁忙 瀏覽:94
php中sleep 瀏覽:490
vr怎麼看視頻演算法 瀏覽:86
手機app如何申報個人所得稅零申報 瀏覽:694
如何截獲手機app連接的ip 瀏覽:331
冰箱壓縮機是否需要電容 瀏覽:346
python列表每一行數據求和 瀏覽:274
自己有一台伺服器可以玩什麼 瀏覽:657
社會學波普諾pdf 瀏覽:584
解壓做食物的小視頻 瀏覽:758