設計模式了解嗎,手寫單例模式,有哪些問題

2021-09-27 13:38:53 字數 1310 閱讀 8516

設計模式(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.確保某乙個類只有乙個例項,而且自行例項化並且向整個系統提供這個...