策略模式:它定義了演算法家族,分別封裝起來,讓他們之間可以相互替換,此模式讓演算法的變化不會影響到使用演算法的使用者。二者的相同點是,都是通過多型來實現子類的實現。簡單工廠模式是通過選項生成對應的子類,來進行對應的操作。而策略模式是將生成子類的操作和對子類的操作封裝在了一起,實現了更好的封裝。
簡單而言,策略模式就是用來封裝演算法的。
建議使用策略模式和簡單工廠模式配合,即下文所示,更使用者最小的暴露。該方法只給使用者暴露乙個context介面
#include #include using namespace std;
/* 策略(strategy)模式
* 它定義了演算法的家族,分別封裝起來,讓它們之間可以互相替換,此模式讓演算法的變化,不會
* 影響到使用演算法的使用者。參考例子,商場打折
*/class cstrategy
virtual ~cstrategy() {}
virtual void algorithminte***ce() = 0;
};class cconstrategya : public cstrategy
virtual void algorithminte***ce() };
class cconstrategyb : public cstrategy
virtual void algorithminte***ce() };
typedef enum tag_strategy
strategy_e;
using cstrategy_ptr = std::shared_ptr;
class context
} ~context()
void getresult() const
private:
cstrategy_ptr m_pcstrategy;
};int main()
c 設計模式之策略模式
策略模式由多個封裝在乙個稱為context的驅動器類裡的相關演算法組成。客戶端程式可以從這些不同的演算法裡選擇乙個,或者在某些情況下,由context替你選擇乙個最好的演算法,策略模式的意圖是使這些演算法可交換,並提供一種方法來選擇最合適的演算法 策略模式跟工廠模式很像,都是交由客戶端來根據需求動態...
c 設計模式之策略模式
概念 通過定義一系列封裝的演算法,使得排程者可以互相替換,此模式讓演算法的變化,不會影響到使用演算法的客戶。特點 1 根據不同的情況建立不同的物件。2 每個物件的方法名相同,但實現卻不同。結構 1 乙個抽象策略 2 多個繼承策略 c 持有乙個具體策略類的引用,供客戶端使用 includeusing ...
C 設計模式之策略模式
這兩年,中國好聲音席捲全國,深受觀眾的青睞,收視率也創造了新高。無論你是否身份低微或是高富帥,都可以通過好聲音這個平台,實現自己的明星夢。緊隨其後,中國好舞蹈等節目鋪天蓋地席捲而來,給選手乙個圓夢的機會。如果想實現明星夢,可以參加中國好聲音,也可以參加中國好舞蹈這些節目,還可以參加星光大道,或者像筷...