策略模式和簡單工廠模式的代碼實現(xiàn)(C++設(shè)計模式)
定義:行為型模式的一種,表現(xiàn)為一個類的行為的算法可以在運行時更改。
目的:定義一系列算法,把它們封裝成concretestrategy,讓它們彼此可替換
在有大量算法相似的情況下取代if else。并且自由度高容易拓展。
缺點:策略類都需要對外暴露,若策略多于4個,考慮使用混合模式解決策略膨脹。

strategy實現(xiàn)策略所必須的接口,concretestrategy實現(xiàn)strategy角色的接口,即負(fù)責(zé)實現(xiàn)具體策略(方法,算法)

策略定義了一種互換使用的算法,可以根據(jù)實際需求使用bus,car or texi。
策略模式的實現(xiàn):高速緩存(Cache)的替換算法。
cache缺失時,cache控制器選擇cache中的一行,并用獲取的數(shù)據(jù)替換他
定義Cache,關(guān)鍵在于如何指定替換算法。
替換算法的定義

方法之一:通過參數(shù)指定,傳入標(biāo)簽??蛻糁恍枰浪惴?biāo)簽,不需要知道具體定義
enum RA {LRU,FIFO,RANDOM};//標(biāo)簽
class Cache
{
private:
????????ReplaceAlgorithm *m_ra;
public:
????????Cache(enum RA ra)
{
????????if(ra==LRU)
????????????m_ra=new LRU_ReplaceAlgorithm();
????????else if(ra==FIFO)
????????????m_ra=....
.....
}
????~Cache() {delete m_ra;}
????void Replace() {m_ra->Replace();}
}//Cache的定義用到了簡單工廠模式,由一個工廠類根據(jù)傳入的參數(shù),動態(tài)決定創(chuàng)建哪一個產(chǎn)品類。該 模式核心在于,對于一個父類的多個繼承子類,工廠對象的工廠函數(shù)根據(jù)用戶輸入,自動new一個子類對象并返回其父類指針,這樣利用父類指針執(zhí)行父類的虛函數(shù),就可以動態(tài)綁定子類的重寫函數(shù),實現(xiàn)多態(tài)。
下列展示簡單工廠模式代碼:



對于工廠模式的設(shè)計核心在于降低耦合,降低各個模塊,各個類的聯(lián)系,避免改一處,其他都要改。又被稱為類的創(chuàng)建型模式:通過專門定義一個類來負(fù)責(zé)創(chuàng)建其他類的實例,被創(chuàng)建的實例通常有共同的父類(抽象接口)



簡單工廠模式利用多態(tài)性不管具體產(chǎn)品返回抽象產(chǎn)品,利用封裝性,內(nèi)部產(chǎn)品發(fā)生變化外部使用者不受影響。缺點:新增產(chǎn)品時去修改工廠類??赏卣沟豢尚薷?。