C 複習之路18 設計模式相關的一些基礎知識1

2021-10-23 17:40:41 字數 1987 閱讀 8655

單例模式、簡單工廠模式等

單例模式顧名思義,保證乙個類僅可以有乙個例項化物件,並且提供乙個可以訪問它的全域性介面。實現單例模式必須注意一下幾點:

單例模式分為懶漢和餓漢兩種實現方式。

懶漢:故名思義,不到萬不得已就不會去例項化類,也就是說在第一次用到類例項的時候才會去例項化乙個物件。在訪問量較小,甚至可能不會去訪問的情況下,採用懶漢實現,這是以時間換空間。

非執行緒安全的懶漢單例模式

1 /*

2 * 關鍵**:建構函式是私有的,不能通過賦值運算,拷貝構造等方式例項化物件。

3 */

4 ​5 //懶漢式一般實現:非執行緒安全,getinstance返回的例項指標需要delete

6 class singleton

7 11 ​

12 private:

13 singleton(){} //建構函式私有

14 singleton(const singleton& obj) = delete; //明確拒絕

15 singleton& operator=(const singleton& obj) = delete; //明確拒絕

16

17 static singleton* m_psingleton;

18 };

19 ​

20 singleton* singleton::m_psingleton = null;

21 ​

22 singleton* singleton::getinstance()

23 28 return m_psingleton;

29 }

執行緒安全的懶漢單例模式

std::mutex mt;

class singleton

//建構函式私有

singleton(const singleton&) = delete; //明確拒絕

singleton& operator=(const singleton&) = delete; //明確拒絕

static singleton* m_psingleton;

};singleton* singleton::m_psingleton = null;

singleton* singleton::getinstance()

mt.unlock();

}return m_psingleton;

}

餓漢:餓了肯定要飢不擇食。所以在單例類定義的時候就進行例項化。在訪問量比較大,或者可能訪問的執行緒比較多時,採用餓漢實現,可以實現更好的效能。這是以空間換時間。

//餓漢式:執行緒安全,注意一定要在合適的地方去delete它

class singleton

//建構函式私有

singleton(const singleton&) = delete; //明確拒絕

singleton& operator=(const singleton&) = delete; //明確拒絕

​ static singleton* m_psingleton;};​

singleton* singleton::m_psingleton = new singleton();

​singleton* singleton::getinstance()

mvc 模式代表 model-view-controller(模型-檢視-控制器) 模式。這種模式用於應用程式的分層開發。

mvc 分層有助於管理複雜的應用程式,因為您可以在乙個時間內專門關注乙個方面。例如,您可以在不依賴業務邏輯的情況下專注於檢視設計。同時也讓應用程式的測試更加容易。

mvc 分層同時也簡化了分組開發。不同的開發人員可同時開發檢視、控制器邏輯和業務邏輯。

設計模式複習(一)

重用的設計方法 多維管理模式 設計模式四要素 設計模式分為三類 結構性模式 行為型模式 23種設計模式總覽,加粗的為課上學過的 建立型結構型 行為型類 工廠方法 factory method 介面卡 adapter 直譯器 interpreter 模板方法 template method 物件抽象工...

《設計模式》 總複習(一)

從今天開始就要開始對設計模式進行複習了。首先還是回顧一下設計模式的核心幾大原則 一 開閉原則 ocp 乙個軟體實體應當對擴充套件開放,對修改關閉。二 黎克特制代換原則 lsp 子型別必須能夠代替他們的基型別。三 依賴導致原則 dip 要依賴於抽象,不要依賴於具體。四 介面隔離原則 isp 使用多個專...

設計模式的學習之路

一 設計模式 使用設計模式的目的 為了 可重用性 讓 更容易被他人理解 保證 可靠性。設計模式使 編寫真正工程化 設計模式是軟體工程的基石脈絡,如同大廈的結構一樣。綜上所述,設計模式就是為了解決某個具體問題而創造的 設計結構。注意 不要為了使用設計模式而使用設計模式,如果設計模式用的不恰當還不如不使...