最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

策略模式和簡單工廠模式的代碼實現(xiàn)(C++設(shè)計模式)

2023-07-27 01:56 作者:silent_ice  | 我要投稿

定義:行為型模式的一種,表現(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)。

下列展示簡單工廠模式代碼:

分別定義產(chǎn)品類型,抽象產(chǎn)品類和具體產(chǎn)品類,在工廠類中根據(jù)c值動態(tài)選擇產(chǎn)生哪一類對象
測試代碼


編譯結(jié)果

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




具體工廠創(chuàng)建具體類(工廠創(chuàng)建葡萄,蘋果)
工廠返回值為抽象類(工廠返回值為水果類)(父類指針指向子類對象)
具體產(chǎn)品繼承于抽象類(葡萄,蘋果繼承于水果類)(繼承+虛函數(shù)重寫)

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


策略模式和簡單工廠模式的代碼實現(xiàn)(C++設(shè)計模式)的評論 (共 條)

分享到微博請遵守國家法律
宜章县| 抚宁县| 铜山县| 定襄县| 上思县| 迁安市| 永春县| 千阳县| 福州市| 阿合奇县| 巴南区| 梧州市| 延安市| 崇义县| 旬邑县| 芒康县| 儋州市| 商河县| 伽师县| 靖西县| 平顶山市| 莱芜市| 丽水市| 新平| 景谷| 高邮市| 滨海县| 西城区| 靖宇县| 全南县| 右玉县| 八宿县| 兴仁县| 威信县| 安多县| 乐清市| 天长市| 嵊州市| 封开县| 布拖县| 周口市|