1. 程式人生 > 其它 >逍遙模擬器+Fiddler抓包

逍遙模擬器+Fiddler抓包

將實現同一功能的多個演算法封裝成多個不同的類,呼叫時更加方便,且避免條件語句的使用。

使用Context類來決定要使用哪個演算法類,使用多型實現。通過在構造Context類時指定哪個演算法類來實現選擇功能。

Strategy類為純虛類,用來派生不同的演算法類。

#include <iostream>
using namespace std;
class Strategy//純虛類 
{
    public:
        virtual ~Strategy(){}
        virtual void AlgorithmInterface()=0;
};
class Context //
上下文類 { public: Context(Strategy *pStrategy); ~Context(); void ContextInterface(); private: Strategy *m_pStrategy; //欄位為指標,記得在解構函式中釋放並置空 }; Context::Context(Strategy *pStrategy):m_pStrategy(pStrategy) { //上下文建構函式,把演算法賦值給指標 } Context::~Context() {
delete m_pStrategy; m_pStrategy=nullptr; } void Context::ContextInterface() { if(m_pStrategy != nullptr) { m_pStrategy->AlgorithmInterface();//呼叫對應的演算法 } } class ConcreateStrategyA: public Strategy //策略A { public: virtual ~ConcreateStrategyA(){} virtual
void AlgorithmInterface(); }; void ConcreateStrategyA::AlgorithmInterface() { cout<<"AlgorithmInterface AAAAA"<<endl; } class ConcreateStrategyB: public Strategy //策略B { public: virtual ~ConcreateStrategyB(){} virtual void AlgorithmInterface(); }; void ConcreateStrategyB::AlgorithmInterface() { cout<<"AlgorithmInterface BBBBB"<<endl; } int main(int argc, char *argv[]) { //建立一個基類物件指標指向派生類物件 Strategy *pStrategy = new ConcreateStrategyA(); // Context *pContext = new Context(pStrategy); pContext->ContextInterface(); delete pContext; return 0; }