策略模式(strategy):它定義了演算法家族,分別封裝起來,讓他們之間可以互相替換,此模式讓演算法的變化,不會影響到使用演算法的使用者
strategt類,定義所有支援的演算法的公共介面
classconcretestrategy 封裝了具體的演算法或行為,繼承strategystrategy ;
virtual
void algorithminte***ce() = 0
;};
class concretestrategya : publiccontext,用乙個concretestrategy來配置,維護乙個對strategy的引用strategy
};class concretestrategyb : public
strategy
};class concretestrategyc : public
strategy
};
class整份**:context ;
~context()
void
algorithminte***ce() ;
private
: strategy*m_strategy;
};
#include #includeusing
namespace
std;
#define free_ptr(p) if(p) delete p; p = nullptr;
//strategt類,定義所有支援的演算法的公共介面
class
strategy ;
virtual
void algorithminte***ce() = 0;};
//concretestrategy 封裝了具體的演算法或行為,繼承strategy
class concretestrategya : public
strategy
};class concretestrategyb : public
strategy
};class concretestrategyc : public
strategy
};//
context,用乙個concretestrategy來配置,維護乙個對strategy的引用
class
context ;
~context()
void
algorithminte***ce() ;
private
: strategy*m_strategy;
};int
main()
1.策略模式的strategy類層次為context定義了一系列可供重用的演算法或行為。繼承有助於析取處這些演算法中的公共功能...
2.策略模式的優點簡化了單元測試,因為每個演算法都有自己的類,可以通過自己的介面單獨測試
3.策略模式封裝了變化
1.使用者必須知道所有的策列類
2.類過多-策略模式會造成很多的策略類,每個具體策略類都會產生乙個新類
——參考大話設計模式
c 設計模式 策略模式
策略模式,看完策略模式最大的感受就是將所有的演算法封裝起來,讓它們之間可以相互替換,這個模式讓演算法的變化不會影響到使用者。我寫的例子還是之前的那個簡易計算器,策略模式可以和簡單工廠模式結合,在客戶端中只需認識乙個concent類,將所有的演算法物件建立以及演算法的使用全部封裝在乙個類中,即conc...
C 設計模式 策略模式
策略模式 定義了演算法家族,分別封裝起來,然後定義乙個統一的藉口,演算法之間可以相互替換。使用該模式可以讓演算法的變化不影響到使用演算法的客戶。模式實現 策略模式具體實現時通常與工廠模式相結合,定義乙個工廠類,來決定初始化哪個演算法。如下 include using namespace std en...
C 設計模式 策略模式
c 設計模式 策略模式 策略模式就是將多種演算法類進行封裝,每個演算法類都繼承於乙個基類a,然後重寫乙個新類b,在這個新類裡定義乙個基類a的物件,然後在新類b的建構函式中對基類a的物件進行賦值,這種方法需要對b的建構函式傳引數,如果需要不傳引數,則可以寫成模板的形式,以下是 include usin...