有人說叫單例模式,可是這有什麼關係呢,叫什麼都可以。
好了進入正題,這個非常簡單,就是把建構函式私有化,然後通過乙個靜態方法獲得物件例項
(這年頭物件真不好找,都是私有化的)
有乙個問題就是可能會多執行緒的時候,導致例項化多次,解決這個問題的方法有三種:
1、同步方法,簡單快捷,但是效能較差:
public class singletonpublic static synchronized singleton getsingleinstance()
return uniqueinstance;
}}
2、直接例項化,簡單粗暴,但是不會延時例項化。
public class singleton1public static singleton1 getinstance()
}
3、通過 同步塊 與 volatile 原子操作關鍵字結合 雙重加鎖:
public class singleton2public static singleton2 getinstance() }}
return uniqueinstance;
}}
注:volatetile應不意味著真正的原子操作,在多執行緒涉及自身操作時會出現誤差,如i++ ,結合同步塊可解決此問題。
設計模式之單件模式
有一些物件我們只需要乙個 也只能有乙個 比如 執行緒池 cache 對話方塊 處理偏好設定和登錄檔的物件 日誌物件 充當印表機 顯示卡等裝置的驅動程式的物件。利用靜態類變數 靜態方法和適當的訪問修飾符,就可以做到只存在乙個例項。這是乙個經典的單件模式 public class singleton p...
設計模式之單件模式
總結性 1 和全域性變數不同的是 利用單件模式,可以在需要時才建立物件 2 作用 常用於管理共享資源,eg 資料庫連線池或者執行緒池 3 單件模式 確保乙個類只有乙個例項,並提供乙個全域性訪問點 4 有點 單件可以延遲例項化 5 單件模式的類圖 類名 singleton 靜態變數 static un...
設計模式之單件模式
今天我們不舉實際的例子了,就直接開始討論單件模式吧,首先我們要明白什麼叫單件模式。單件模式 確保乙個類只有乙個例項,並提供乙個全域性訪問點。在寫程式的過程中,很多時候我們需要用到乙個全域性物件,很好,當我們需要使用全域性物件的時候我們的單件模式就排上用場了,廢話不多說,我們直接看 class sin...