慢慢的做記錄,做最強大的自己
看了大話設計模式之後感觸很深,發現自己還有很多學習的東西,設計軟體並不是一兩句**把功能寫完了就行,需要思考的內容有很多
****參考大話設計模式這本書,這裡在部落格裡記錄一下,不可能每次都去翻書,但是在部落格裡面是非常好找的。
單例模式應用場景很多,比如我設定定時器,進行多執行緒任務管控,多執行緒的處理在我工作中編寫**的時候還是經常會用到的;或者我的軟體中存在多個任務,但只能有
其中乙個在執行;
單例模式:保證乙個類裡面只有乙個例項,並提供乙個訪問他的全域性訪問點。
這個過程具體是怎麼樣的,就看一下下面的例子,比如我有乙個任務類,我不想其他訪問者不斷的去new這個任務類,那麼我就先私有化,私有化完畢後,再建立乙個全域性
訪問點
privatestatic task programx; //
定義了乙個任務程式設計x
private task() //
先私有化,堵死外界利用new建立這個例項的可能
public
static task gettask() //
利用gettask方法獲得唯一的乙個全域性訪問點
return
programx;
}
在使用者進行呼叫時,就不需要不斷的去new這個任務類了,理解起來還是很簡單的
staticvoid main(string
args)
console.readline();
}
多執行緒裡面處理又是怎麼樣的呢,我們知道,多執行緒處理時可以通過用鎖(lock)來阻止執行緒訪問,lock確保當乙個執行緒位於臨界區時,另乙個執行緒不進入臨界區。如果其他執行緒試圖進入已經被我鎖定的**裡面,那麼它就會被阻止,除非我釋放了當前物件。
classsingleton
private
static
singleton getinstance()
}return
instance;
}}
現在我們看一下雙重鎖定,上面的例子裡面每次都要給執行緒加鎖,雙重鎖定則只在例項未被建立的時候進行加鎖處理,同時也能保證多執行緒的安全
classsingleton
private
static
singleton getinstance()}}
return
instance;
}}
其實單例模式也很簡單,歸納一下其實就是去判斷例項是否存在,存在的話就直接返回,不存在就new乙個例項,使用的人就可以嚴格的控制這個類不斷的被new了
設計模式 單例模式
單例模式 singleton pattern 是乙個比較簡單的模式,其定義如下 ensure a class has only one instance,and provide a golbal point of acess to it.確保某乙個類只有乙個例項,而且自行例項化並且向整個系統提供這個...
設計模式 單例模式
class testsingleton static public function instance return self testsingleton private function clone public function setsinvar sinvar public function ...
設計模式 單例模式
單例模式的目的是保證類在系統中只被例項化一次,由該唯一的例項來為系統提供服務.單例模式主要用於保證服務的統一,比如獲取統一的編號服務,模仿oracle的序列生成等.但單例的使用需要謹慎,特別是在需要作負載均衡的地方,因為這種程式級的單例模式實際上只能保證在乙個應用中為單例.如果被多個應用載入,還是會...