設計模式(design pattern)
是一套被反覆使用、多數人知曉的、經過分類編目的、**設計經驗的總結。使用設計模式是為了可重用**、讓**更容易被他人理解、保證**可靠性。 毫無疑問,設計模式於己於他人於系統都是多贏的;設計模式使**編制真正工程化。
單利模式應該用場景:
核心作用:保證乙個類只有乙個例項,並且提供乙個訪問該例項的全域性訪問點
應該在什麼時候下使用單例模式?
舉乙個小例子,在我們的windows桌面上,我們開啟了乙個**站,當我們試圖再次開啟乙個新的**站時,windows系統並不會為你彈出乙個新的**站視窗。,也就是說在整個系統執行的過程中,系統只維護乙個**站的例項。這就是乙個典型的單例模式運用。
繼續說**站,我們在實際使用中並不存在需要同時開啟兩個**站視窗的必要性。假如我每次建立**站時都需要消耗大量的資源,而每個**站之間資源是共享的,那麼在沒有必要多次重複建立該例項的情況下,建立了多個例項,這樣做就會給系統造成不必要的負擔,造成資源浪費。
再舉乙個例子,**的計數器,一般也是採用單例模式實現,如果你存在多個計數器,每乙個使用者的訪問都重新整理計數器的值,這樣的話你的實計數的值是難以同步的。但是如果採用單例模式實現就不會存在這樣的問題,而且還可以避免執行緒安全問題。同樣多執行緒的執行緒池的設計一般也是採用單例模式,這是由於執行緒池需要方便對池中的執行緒進行控制
適用場景:
1. 需要生成唯一序列的環境
2.需要頻繁例項化然後銷毀的物件。
3.建立物件時耗時過多或者耗資源過多,但又經常用到的物件。
4.方便資源相互通訊的環境
**實現:
#include
using
namespace std;
/*a) 建構函式私有化
b) 提供乙個全域性的靜態方法(全域性訪問點)
c) 在類中定義乙個靜態指標,指向本類的變數的靜態變數指標
*/class
singelton
public
:static singelton *
getinstance()
return p_singel;
}static
void
freeinstance()
}private
:static singelton *p_singel;};
singelton * singelton::p_singel =
null
;//靜態資料成員在類外初始化
了解單例設計模式
餓漢式單例 singleton類裡面會始終維持乙個instance 的例項化物件,然而並不關心這個物件是否被使用。package com.gen 單例設計類 class singleton public static singleton getinstance 測試類 客戶端 public clas...
了解23種設計模式之單例模式
一,什麼是單例模式?單例模式是一種物件建立型模式,使用單例模式,可以保證為乙個類只生成唯一的例項物件。也就是說,在整個程式空間中,該類只存在乙個例項物件。其實,gof gang of four,代表意思是 設計模式一書,四個作者,被稱為四人組 對單例模式的定義是 保證乙個類,只有乙個例項存在,同事提...
設計模式 單例模式
單例模式 singleton pattern 是乙個比較簡單的模式,其定義如下 ensure a class has only one instance,and provide a golbal point of acess to it.確保某乙個類只有乙個例項,而且自行例項化並且向整個系統提供這個...