国产探花免费观看_亚洲丰满少妇自慰呻吟_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模式的一部分實現方式。

應用場景

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 开远市| 泰顺县| 昭觉县| 磐石市| 银川市| 武城县| 涟水县| 西和县| 富锦市| 井冈山市| 犍为县| 卓资县| 新巴尔虎右旗| 台安县| 连江县| 乐清市| 灵台县| 四川省| 定陶县| 城市| 大同市| 阜新| 台前县| 泉州市| 襄垣县| 梧州市| 太仆寺旗| 当阳市| 酉阳| 松江区| 建宁县| 鄱阳县| 林周县| 娱乐| 方山县| 乐东| 凭祥市| 宁乡县| 汪清县| 东方市| 凤台县|