C 筆記問題整理(二) 設計模式

2021-08-25 05:54:35 字數 1586 閱讀 5100

總結一下遇到的問題,和可能遇到的面試題目。

1.什麼是設計模式

2.什麼是單例模式

3.在單例模式中,什麼是懶漢模式,什麼是餓漢模式,二者有什麼區別?

4.在單例模式中,不考慮多執行緒的情況下,如何保證乙個類只建立乙個例項,除了這一種,還有哪種方法能禁止類生成物件

5.用c++舉乙個單例模式的例子?

參***

1.什麼是設計模式

設計模式是一種經驗的傳承,是被前人發現,經過總結形成的一套某一類問題一般性解決方案,而不是被設計出來的定性規則,它不像演算法那樣可以照搬照用。

經典設計模式一共23種,由於水平有限下面只介紹其中幾種。

2.什麼是單例模式?

單例模式,顧名思義,只有乙個例子,是一種常用的軟體設計模式。其核心結構中只包含乙個被稱為單例的特殊類。通過單例模式可以保證系統中,應用該模式的類乙個類只有乙個例項。即乙個類只有乙個物件例項

單例模式的特點:

1.只有乙個例子。

2.提供了乙個物件的全域性訪問指標(放在public裡面),這個指標被所有模組共享。

3.單例模式允許將來有更多的例項(可擴充性)。

3.在單例模式中,什麼是懶漢模式,什麼是餓漢模式,二者有什麼區別?

懶漢模式這個名字還挺有趣的,顧名思義懶漢,就是指等用到這個例子的時候才會例項化物件,

餓漢模式正好相反,因為飢餓,當單例類定義的時候就例項化好了。

從以上的定義可以看出,懶漢模式消耗的時間更多,而餓漢模式消耗的空間更多。

所以:

訪問量比較大,或執行緒比較多的時候,執行時間較長,適合用餓漢模式,

訪問量較小時,執行時間短的時候,可以用懶漢模式。

4.在單例模式中,不考慮多執行緒的情況下,如何保證乙個類只建立乙個例項,除了這一種,還有哪種方法能禁止類生成物件?

單例模式通過將建構函式設定為類的私有成員((或保護成員)的方式來禁止通過類通過一般的建構函式生成新物件。

除此之外,抽象類也能禁止類例項化。

即在類中加入純虛函式,就是在函式前面加個virtual,後面不定義函式,加個=0,寫法如下:

class

example

;

5.用c++**分別寫出懶漢模式、餓漢模式和加鎖後的單例模式**?

單例模式除了建構函式私有化外,還要保證能有乙個可以全域性呼叫的介面。

懶漢模式如下:

class singleton1

static singleton1 *psig;

public:

static singleton1* getinstance()

return psig;

}};

設計模式之簡單工廠模式(整理筆記)

物件導向和面向過程的區別 活字印刷術和 印刷術的區別。借用大神的比喻,感覺很貼切,而且想像步到更好的了 借用面試所寫的的 乙個程式 輸入個位數的減減乘除,輸出結果。初學者和大部分開發者所犯下錯誤 命名不規範 請使用駝峰式 邏輯不夠嚴謹 缺少對非 常規方式的考慮 還有最重要的是只針對當前功能所寫出的 ...

設計模式整理 設計模式總覽

1 抽象工廠模式 abstract factory 提供乙個建立一系列相關或相互依賴物件的介面,而無需指定它們具體的類。當需要產生產品物件家族時使用此模式。2 工廠方法模式 factory method 定義乙個用於建立物件的介面,讓子類決定將哪乙個類例項化,即將乙個類的例項延遲到其子類。延遲子類的...

大話設計模式 筆記二

單一職責原則 單一職責原則 srp 對於乙個類而言,應該僅有乙個引起它變化的原因。通俗的說,乙個類只能幹乙個事,只能承擔乙個職責。如果乙個類承擔的職責過多,等於把這些職責耦合在一起,這種耦合會導致設計十分的脆弱,當變化發生的時候,會遭到意想不到的破壞。開放 封閉原則 開放封閉原則,簡稱開閉原則,指軟...