常用設計模式

2021-08-20 14:10:02 字數 1781 閱讀 3666

單例模式

單例大約有兩種實現方法:懶漢與餓漢

@懶漢:在第一次用到類例項的時候才會去例項化

@餓漢:單例類定義的時候就進行例項化

特點與選擇:

由於要進行執行緒同步,所以在訪問量比較大,或者可能訪問的執行緒比較多 時,採用餓漢實現,可以實現更好的效能。這是以空間換時間

在訪問量較小時,採用懶漢實現。這是以時間換空間

class singleton

return m_psingleton;

}private:

singleton(){}

singleton(const singleton&){}; //明確拒絕

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

static singleton* m_psingleton;

};singleton* singleton::m_psingleton = null;

介面卡模式

將乙個類的介面轉換成客戶希望的另乙個介面,使得原本由於介面不相容而不能一起工作的哪些類可以一起工作。

使用場景:

1、系統需要使用現有的類,而此類的介面不符合系統的需要。

2、想要建立乙個可以重複使用的類,用於與一些彼此之間沒有太大關聯的一些類,包括一些可能在將來引進的類一起工作,這些源類不一定有一致的介面。

3、通過介面轉換,將乙個類插入另乙個類系中。

繼承:或者依賴

繼承:class sequence //順序類,目標類

;class stack:public sequence //棧, 適配類

void pop()

private:

deque m_deque;

};依賴:

template

class

stack

private:

vector

vec;

};

迭代器模式

1.訪問乙個聚合物件的內容而無需暴露它的內部表示。

2.支援對聚合物件的多種遍歷。

3.為遍歷不同的聚合結構提供乙個統一的介面(即, 支援多型迭代)。

class stack

;};

觀察者-監聽者模式

引用塊內容

class listener

virtual

void handlmessage(int message) = 0;

protected:

string _name;

};class listener1 : public listener

void handlmessage(int msgid)

void handlmessage(int msgid)

void handlmessage(int msgid)

void displaymessage(int msgid)}}

private:

map> _obmap;

int msgid;

};

常用設計模式

mvc 模型 檢視 控制器 通過 委託其他物件做事情 或者充當某些功能的中間類 觀察者 在乙個物件或者值發生變化時,對它的觀察者發出通知 單例模式 應用程式執行的過程中只有乙個例項 工廠模式 為物件的建立提供統一的介面 簡單工廠模式,工廠方法模式,抽象工廠模式 裝飾模式 為類動態新增方法 一般用ca...

常用設計模式

常用設計模式有工廠模式 道理模式以及生產者消費者模式 使用靜態內部類的方式可以保證執行緒安全,並且比同步方法的效能好。package com.qqyumidi public class singleton 私有化建構函式 private singleton public static singlet...

常用設計模式

工作一年c 服務端開發,最常用的就是單例模式,那我就從這個開始 1.單例模式是一種只能宣告乙個物件的特殊類 只有乙個例項 該模式的作用是節約系統資源。實現 建構函式和拷貝建構函式私有化。2.簡單工廠模式 簡單工廠模式實際就是建立乙個工廠類,該類根據建立產品的型別引數來呼叫不同的產品類的建構函式 3....