大話設計模式C 版本 02 策略模式

2021-10-07 18:08:50 字數 1518 閱讀 8103

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

注意:與簡單工廠模式相比,使用上只需要知道 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類的函式做...

大話設計模式 策略模式

前言 做事情的時候我們需要動動腦來簡化自己完成任務的負擔,這就需要講究策略了,我們會根據自己所處的環境列出所有的可能條件,再從中挑選合適的方法來完成這件事。就像我們過年回家,我們可以選擇高鐵 普通火車 還可以選擇硬座 軟座 臥鋪,這都是我們回家的策略 買不到直達的還得轉戰好幾個火車站,策略的最終到達...

大話設計模式 策略模式

前言 做事情的時候我們需要動動腦來簡化自己完成任務的負擔,這就需要講究策略了,我們會根據自己所處的環境列出所有的可能條件,再從中挑選合適的方法來完成這件事。就像我們過年回家,我們可以選擇高鐵 普通火車 還可以選擇硬座 軟座 臥鋪,這都是我們回家的策略 買不到直達的還得轉戰好幾個火車站,策略的最終到達...