設計模式 單例模式

2022-04-06 08:15:47 字數 1368 閱讀 4714

慢慢的做記錄,做最強大的自己

看了大話設計模式之後感觸很深,發現自己還有很多學習的東西,設計軟體並不是一兩句**把功能寫完了就行,需要思考的內容有很多

****參考大話設計模式這本書,這裡在部落格裡記錄一下,不可能每次都去翻書,但是在部落格裡面是非常好找的。

單例模式應用場景很多,比如我設定定時器,進行多執行緒任務管控,多執行緒的處理在我工作中編寫**的時候還是經常會用到的;或者我的軟體中存在多個任務,但只能有

其中乙個在執行;

單例模式:保證乙個類裡面只有乙個例項,並提供乙個訪問他的全域性訪問點。

這個過程具體是怎麼樣的,就看一下下面的例子,比如我有乙個任務類,我不想其他訪問者不斷的去new這個任務類,那麼我就先私有化,私有化完畢後,再建立乙個全域性

訪問點

private

static task programx; //

定義了乙個任務程式設計x

private task() //

先私有化,堵死外界利用new建立這個例項的可能

public

static task gettask() //

利用gettask方法獲得唯一的乙個全域性訪問點

return

programx;

}

在使用者進行呼叫時,就不需要不斷的去new這個任務類了,理解起來還是很簡單的

static

void main(string

args)

console.readline();

}

多執行緒裡面處理又是怎麼樣的呢,我們知道,多執行緒處理時可以通過用鎖(lock)來阻止執行緒訪問,lock確保當乙個執行緒位於臨界區時,另乙個執行緒不進入臨界區。如果其他執行緒試圖進入已經被我鎖定的**裡面,那麼它就會被阻止,除非我釋放了當前物件。

class

singleton

private

static

singleton getinstance()

}return

instance;

}}

現在我們看一下雙重鎖定,上面的例子裡面每次都要給執行緒加鎖,雙重鎖定則只在例項未被建立的時候進行加鎖處理,同時也能保證多執行緒的安全

class

singleton

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的序列生成等.但單例的使用需要謹慎,特別是在需要作負載均衡的地方,因為這種程式級的單例模式實際上只能保證在乙個應用中為單例.如果被多個應用載入,還是會...