国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++設計模式之策略模式(Strategy)

2020-05-23 13:34:55
字體:
來源:轉載
供稿:網友

策略模式將不同算法的邏輯抽象接口封裝到一個類中,通過組合和多態結合的方式來進行不同算法具體的實現。

作用

策略模式是一種定義一系列算法的方法,Strategy類層次為Context定義了一系列的可重用的算法或行為, 所有的算法以相同的方式進行調用,減少了算法類之間的耦合

類視圖

C++,設計模式,策略模式,Strategy

實現

class Strategy{public:  ~Strategy();  virtual void AlgrithmInterface()=0;protected:  Strategy();};class ConcreteStrategyA : public Strategy{public:  ConcreteStrategyA();  ~ConcreteStrategyA();  virtual void AlgrithmInterface();};class ConcreteStrategyB : public Strategy{public:  ConcreteStrategyB();  ~ConcreteStrategyB();  virtual void AlgrithmInterface();};class Context{public:  Context(Strategy*);  ~Context();  void DoAction();private:  Strategy* _strategy;};int main(){  //策略A與B可替換  Strategy* pStra = new ConcreteStrategyA();  Context* pCon = new Context(pStra);  pCon->DoAction();  pStra = new ConcreteStrategyB();  pCon = new Context(pStra);  pCon->DoAction();  return 0;}

Strategy模式和Template模式的根本區別是Strategy通過組合方式實現算法(實現)的異構, 而Template模式則采取的是繼承的方式,這兩個模式的區別也是繼承和組合兩種實現接口重用的方式的區別。

Strategy模式和Bridge模式的區別是一個是行為模式,一個是對象的結構模式,Strategy更偏向與不同算法的接口封裝實現,其重點是在算法行為的實現,一般為算法的擴展;而Bridge更注重的是對象和實現的分離,對象和實現分別可進行擴展,兩者互不影響。相對Strategy模式,Bridge模式要表達的內容要更多,結構也更加復雜,而Strategy模式更像是Bridge模式的一部分實現方式。

應用場景

當有不同的算法和行為可供選擇,每種算法和行為可對應一個類,且功能各不相同。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 姜堰市| 鄂伦春自治旗| 固镇县| 濮阳市| 白河县| 平顺县| 广东省| 成安县| 剑川县| 田东县| 石阡县| 新源县| 万山特区| 略阳县| 清涧县| 定远县| 马公市| 格尔木市| 荣昌县| 伊春市| 扎囊县| 全南县| 元阳县| 徐州市| 德庆县| 家居| 阿尔山市| 临夏市| 沈阳市| 轮台县| 灵台县| 临江市| 库伦旗| 宁河县| 阿图什市| 汉川市| 西畴县| 肇庆市| 宝兴县| 宝兴县| 牡丹江市|