劍指offer 2 單例模式

2022-07-20 05:15:12 字數 884 閱讀 6543

實現乙個單例模式

實現單例模式的關鍵在於:

將建構函式設定為private,或是protected

建立乙個靜態函式,呼叫建構函式。

使用乙個靜態成員變數儲存單例物件

因為只能在堆上分配記憶體,因此需要乙個函式顯式的呼叫析構函式

class

singleton

}return

obj }

~singleton();

static

void

free

()

private

: singleton();

static singleton*obj;

mutex mutex;

};static singleton* singleton::obj=nullptr;

模板單例模式。派生自本模板的子類都是單例模式。

template class

singleton

}return

obj }

~singleton();

static

void

free

()

//建構函式變為 protected , 因為子類建構函式要呼叫基類的建構函式。

protected

: singleton();

private

:

static singleton*obj;

mutex mutex;

};static singleton* singleton::obj=nullptr;

class derive : public singleton;

劍指offer 題2 單例模式

懶漢式 第一次呼叫時載入 1.第一版 上來沒有想很多,直接敲起,使用synchronized保證執行緒安全,如下 public class single 使用synchronized保證安全 public static synchronized single getsingle return ins...

劍指offer 單例模式

單例模式分為懶漢式和餓漢式。所謂單例模式,就是構造器私有化,對外界提供唯一的乙份例項。public class test class person 構造器私有化 public static person getinstance return p public class test class per...

劍指offer(2) 替換空格

假設面試官讓我們在原來的字串上做替換。時間複雜度為o n 的解法。我們可以先遍歷一遍字串,這樣就能統計出字串中空格的總數,並可以由此計算出替換之後的字串的總長度。每替換乙個空格,長度增加2,因此替換以後字串的長度等於原來的長度加上2乘以空格數目。length為牛客系統規定字串輸出的最大長度,固定為乙...