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

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

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

2020-01-26 13:43:57
字體:
來源:轉載
供稿:網友

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

作用

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

類視圖

實現

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模式的一部分實現方式。

應用場景

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 湄潭县| 鄂州市| 胶州市| 玉门市| 深水埗区| 通州市| 施甸县| 丹东市| 福安市| 梧州市| 山阳县| 靖边县| 穆棱市| 长乐市| 依兰县| 汽车| 通海县| 忻州市| 保靖县| 安平县| 衡山县| 保亭| 北宁市| 三明市| 宝清县| 东光县| 桐乡市| 化隆| 安新县| 张家口市| 通道| 榆中县| 修武县| 齐齐哈尔市| 垦利县| 凤山县| 金沙县| 宁陵县| 南通市| 家居| 茂名市|