C 設計模式 策略模式

2022-09-21 06:39:08 字數 1642 閱讀 8355

策略模式(strategy):它定義了演算法家族,分別封裝起來,讓他們之間可以互相替換,此模式讓演算法的變化,不會影響到使用演算法的使用者

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;

};

整份**:

#include #include 

using

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...