什麼是單例模式?
保證乙個類只有乙個例項,並提供乙個訪問它的全域性訪問點。【dp】
讓類的自身負責儲存它的唯一例項,這個類保證沒有其他例項可以被建立,並且此類可以提供乙個訪問該例項的方法。【dp】
什麼時候需要單例模式?
程式只需要乙個方法控制某項功能,不允許建立第二個此功能。比如:銀行使用的取號機。
使用單例模式需要了解c++static關鍵字的用法我的這篇博文對static作了**
測試用例:
int main()
單例模式實現:
class
singleton
//宣告乙個類的靜態物件(類外初始化)
static singleton *instance;
public:
//靜態成員方法,提供乙個訪問僅有例項的全域性訪問點。即提供介面建立物件
static singleton* getinstance()
return instance;
}};//類外部初始化靜態成員變數(靜態成員變數必須被初始化)
singleton* singleton::instance = null;
附:若為多執行緒程式設計情況下,需要加鎖並做兩次判斷是否為空。
class
singleton
//宣告乙個類的靜態物件(類外初始化)
static singleton *instance;
public:
//靜態成員方法,提供乙個訪問僅有例項的全域性訪問點。即提供介面建立物件
static singleton* getinstance()//if
}//lock
}//if
return instance;
}};//類外部初始化靜態成員變數(靜態成員變數必須被初始化)
singleton* singleton::instance = null;
加lock是為了兩個執行緒只有乙個進入,另乙個執行緒排隊等候。第乙個執行緒進入並出來後,後者才能進入。第二個判空是為了保證第乙個執行緒建立了例項,第二個執行緒進入後就不再建立例項。 C 設計模式淺識裝飾模式
裝飾模式 動態的給乙個物件新增一些額外的職責,就增加功能來說,裝飾模式比生成子類更加靈活。裝飾模式的四個角色 元件類 component 具體元件類 coneretecomponent 裝飾類 decorator 從外類來擴充套件component類的功能,但對於component來說是無需知道de...
C 設計模式淺識模板方法模式
模板方法模式 定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟。適用的乙個時機 當我們要完成在某一細節層次一致的乙個過程或一系列步驟,但其個別步驟在更詳細的層次上的實現可能不同時,我們通常考慮用模板方法模式來處理。模板...
C 設計模式淺識職責鏈模式
職責鏈模式 chainofresponsibility 使多個物件都有機會處理請求,從而避免請求的傳送者和接收者之間的耦合關係。將這個物件連成一條鏈,並沿著這條鏈傳遞該請求,直到有乙個物件處理它為止。職責鏈的好處 當客戶提交乙個請求時,請求時沿鏈傳遞直至有乙個concretehandler物件負責處...