1、工廠模式屬於建立型模式,大致可以分為三類,簡單工廠模式、工廠方法模式、抽象工廠模式。
簡單工廠模式,它的主要特點是需要在工廠類中通過標籤做判斷,返回例項
工廠方法模式,是指定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。factory method使乙個類的例項化延遲到其子類。
抽象工廠模式,工廠方法模式的缺點,每增加一種產品,就需要增加乙個物件的工廠,抽象工廠模式的定義為提供乙個建立一系列相關或相互依賴物件的介面,而無需指定它們具體的類,及抽象工廠模式的工程基類,有所有的介面,派生出來的工廠類重寫。
2、策略模式是指定義一系列的演算法,把它們乙個個封裝起來,並且使它們可相互替換。
例:
//方式一:直接通過引數指定,傳入乙個特定演算法的指標。抽象介面
class
replacealgorithm
; //
三種具體的替換演算法
class lru_replacealgorithm : public
replacealgorithm
};
class fifo_replacealgorithm : public
replacealgorithm
};
class random_replacealgorithm: public
replacealgorithm
};
//方式二:也是直接通過引數指定,只不過不是傳入指標,而是乙個標籤。這樣客戶只要知道演算法的相應標籤即可,而不需要知道演算法的具體定義。cache需要用到替換演算法
class
cache
~cache()
void replace()
};
//方式三:利用模板實現。演算法通過模板的實參指定。當然了,還是使用了引數,只不過不是建構函式的引數。在策略模式中,引數的傳遞難以避免,客戶必須指定某種演算法。cache需要用到替換演算法
enum ra ; //
標籤
class
cache
~cache()
void replace()
};
//3、介面卡模式cache需要用到替換演算法
template
class
cache
~cache()
void
replace()
};
intmain()
介面卡模式將乙個類的介面轉換成客戶希望的另外乙個介面,使得原本由於介面不相容而不能一起工作的那些類可以一起工作。它包括類介面卡和物件介面卡。
例:
//參考自:雙端佇列
class
deque
void push_front(int x)
void pop_back()
void pop_front()
};
//順序容器
class
sequence
; //
棧 class stack: public
sequence
void
pop()
private
: deque deque;
//雙端佇列
};
//佇列
class queue: public
sequence
void
pop()
private
: deque deque;
//雙端佇列
};
intmain()
設計模式總結 一
單一職責原則 開放 封閉原則 依賴倒轉原則 class tshirts finery class bigtrouser finery class sneakers finery class suit finery class tie finery class leathershoes finery ...
移動設計模式總結(一)
最佳實踐 選單無主次之分,每個選單所佔空間大小一致。選單有主次之分,主要的佔空間較大,其餘的佔空間較小。在使用桌面式導航布局時,要充分考慮到給使用者提供個性化和定製化功能。最佳實踐 列表選單導航適合長標題或者有副標題說明,使用類表選單導航應該提供乙個從子頁面返回類表頁面的方式,通常在標題欄新增乙個乙...
物件導向設計模式總結一
物件導向設計的優點 物件導向設計的優點 可維護 可擴充套件 可復用 靈活性好。目標 物件導向設計的目標 高內聚,低耦合。設計模式分類 物件導向常見的23種設計模式主要分為 建立型 結構型和行為型。物件導向設計原則 1.單一職責原則 就乙個類而言,應該僅有乙個引起它變化的原因。1.1 如果你能夠想到多...