日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

设计模式:策略模式(C++)【诸葛亮的锦囊妙计】

發布時間:2025/3/15 c/c++ 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 设计模式:策略模式(C++)【诸葛亮的锦囊妙计】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

序言

今天帶領大家一起來學習下策略模式,看到策略二字,就讓筆者想到了謀略,想到了三國,那個謀士如云、英雄輩出的年代。遙想公瑾當年,小喬初嫁了,雄姿英發。咳咳,扯回來。我們所說的策略 ,從字面意思就是一個好的辦法,對應我們編程來說就是一個好的方法 而且這個方法得站在一個高度,從編程的整體的角度要做到解耦合可擴展,我想用什么策略就用什么策略 ,下次我又想到了好策略還不會更改現有的代碼這就是策略模式。沒懂?請繼續....

策略模式場景化

我們拿劉備江東就親的事 說起,諸葛亮給趙云 3條錦囊妙計(也就3個策略),讓趙云在合適的時候打開 然后按照策略行事。

這個3條 妙計 有直接 告訴子龍嗎當然沒有,不然就不靈了(面向接口編程,讓客戶知道的越少越好)。這些妙計是不是都是策略,是不是應該實現同一個策略接口每個不同的妙計或者說策略(算法) 都有不同的實現,這樣也更有擴展 后序再添加 策略只需要實現接口就行了。

那么我們再來看看趙云(策略使用者),趙云使用策略不需要知道 這個策略 諸葛亮是如何想出來這個妙計他只管打開妙計 按計而行 就可以,那么趙云 只需要擁有 一個策略接口的實例 就可以了。如果 諸葛亮下次 又有了新的妙計,趙云依舊可以 使用新的策略。因為是面向接口編程嘛。

策略模式代碼

前面啰嗦那么多,策略模式總的來說 就是 將算法進行封裝,并且面向接口編程。策略使用者 包含策略接口 ,設置好策略,然后可以使用策略了。直接看代碼吧,代碼很簡單 主要是 這種封裝 和 面向接口編程的思想 一定要領悟

#define _CRT_SECURE_NO_WARNINGS #include <iostream> using namespace std;//策略接口,抽象類 //所有妙計的基類,具體策略 自己實現去。 class Strategy { public:virtual void doSomeThing() = 0;//純虛函數 };//具體的策略,具體的實現算法 //諸葛亮的錦囊妙計 //第一條妙計 class StrategyFirst:public Strategy {void doSomeThing(){cout << "一、拜見喬國老,并把劉備娶親的事情搞得東吳人盡皆知" ;} };//第二條妙計 class StrategySecond :public Strategy {void doSomeThing(){cout << "二、用謊言(曹操打荊州)騙泡在溫柔鄉里的劉備回去" ;} };//第三條妙計 class StrategyThird :public Strategy {void doSomeThing(){cout << "三、讓孫夫人擺平東吳的追兵,她是孫權妹妹,東吳將領懼她三分" ;} };//策略上下文,也就是使用策略的環境 //趙云拆錦囊 class StategyContext { public://使用策略(執行具體的算法)//趙云拆錦囊void useStrategy(){cout << "趙云打開錦囊->";this->strategy->doSomeThing();cout << "->趙云關閉錦囊" << endl;return;}//設定 策略void setStrategy(Strategy* strategy){this->strategy = strategy;} private:Strategy* strategy; };int main(int argc, char *argv[]) {StategyContext zhaoYun;//趙云StrategyFirst first;//第一條妙計StrategySecond second;//第二條妙計StrategyThird third;//第三條妙計//設定具體策略,然后使用策略zhaoYun.setStrategy(&first);zhaoYun.useStrategy();zhaoYun.setStrategy(&second);zhaoYun.useStrategy();zhaoYun.setStrategy(&third);zhaoYun.useStrategy();return EXIT_SUCCESS; }


運行結果


新人創作打卡挑戰賽發博客就能抽獎!定制產品紅包拿不停!

總結

以上是生活随笔為你收集整理的设计模式:策略模式(C++)【诸葛亮的锦囊妙计】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。