單例模式、簡單工廠模式等
單例模式顧名思義,保證乙個類僅可以有乙個例項化物件,並且提供乙個可以訪問它的全域性介面。實現單例模式必須注意一下幾點:
單例模式分為懶漢和餓漢兩種實現方式。
懶漢:故名思義,不到萬不得已就不會去例項化類,也就是說在第一次用到類例項的時候才會去例項化乙個物件。在訪問量較小,甚至可能不會去訪問的情況下,採用懶漢實現,這是以時間換空間。
非執行緒安全的懶漢單例模式
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 使用多個專...
設計模式的學習之路
一 設計模式 使用設計模式的目的 為了 可重用性 讓 更容易被他人理解 保證 可靠性。設計模式使 編寫真正工程化 設計模式是軟體工程的基石脈絡,如同大廈的結構一樣。綜上所述,設計模式就是為了解決某個具體問題而創造的 設計結構。注意 不要為了使用設計模式而使用設計模式,如果設計模式用的不恰當還不如不使...