策略模式:定義了演算法家族,分別封裝起來,讓他們之間可以互相替換,此模式讓演算法的變化不會影響到用演算法的客戶。
注意:與簡單工廠模式相比,使用上只需要知道 context 類即可
演算法會時常變動;
用幾個類封裝了這些演算法且有共同的父類;
抽象乙個演算法類
class
strategy
;
寫具體的子類class
concreatestrategya
:public strategy};
class
concreatestrategyb
:public strategy};
class
concreatestrategyc
:public strategy
};
建立乙個類,根據不同條件呼叫不同的策略class
context}~
context()
void
contextinte***ce()
private
: strategy *strategy;
char algorithm;
};
#include
class
strategy
// 抽象類-策略類
;class
concreatestrategya
:public strategy // 策略a};
class
concreatestrategyb
:public strategy // 策略b};
class
concreatestrategyc
:public strategy // 策略c};
#if 0
class
context
~context()
void
contextinte***ce()
private
: strategy *strategy;};
intmain()
#else
class
context
// 使用策略的類}~
context()
void
contextinte***ce()
private
: strategy *strategy;
char algorithm;};
intmain()
#endif
策略模式是一種定義了一系列演算法的方法,它可以以相同的方式呼叫所有的演算法,減少各種演算法類與使用演算法類之間的耦合。 --《大話設計模式》
策略模式的strategy類層次為context 類定義了一系列可供重用的演算法和行為。繼承有助於析取出這些演算法中的公共功能。
大話設計模式02 策略模式 2020 9 18
一 策略模式簡介 策略模式的定義一系列演算法的一種方法,這些演算法都是做相同的工作,只是實現不同。為了減少客戶端呼叫和策略演算法類的耦合性,即可使用策略模式。其主要框架如下 strategy為策略父類,有多個不同策略子類繼承於它。context類包含strategy成員,將strategy類的函式做...
大話設計模式 策略模式
前言 做事情的時候我們需要動動腦來簡化自己完成任務的負擔,這就需要講究策略了,我們會根據自己所處的環境列出所有的可能條件,再從中挑選合適的方法來完成這件事。就像我們過年回家,我們可以選擇高鐵 普通火車 還可以選擇硬座 軟座 臥鋪,這都是我們回家的策略 買不到直達的還得轉戰好幾個火車站,策略的最終到達...
大話設計模式 策略模式
前言 做事情的時候我們需要動動腦來簡化自己完成任務的負擔,這就需要講究策略了,我們會根據自己所處的環境列出所有的可能條件,再從中挑選合適的方法來完成這件事。就像我們過年回家,我們可以選擇高鐵 普通火車 還可以選擇硬座 軟座 臥鋪,這都是我們回家的策略 買不到直達的還得轉戰好幾個火車站,策略的最終到達...