C 與設計模式(2) 策略模式

2021-07-24 03:39:30 字數 737 閱讀 9762

策略模式是指提供介面,讓使用者使用可替換的演算法。

enum alg ; //標籤  

//抽象介面

class algorithm

; //三種具體的替換演算法

class algorithm1 : public algorithm

};

class algorithm2 : public algorithm

};

class algorithm3 : public algorithm

};class user

~user()

void alg()

};int main()

這裡使用標籤來區分不同的演算法,可以看出這麼做會難以進行擴充套件。

使用函式指標和匿名函式會對策略模式有很大的幫助,舉個例子:

struct info

;template

class vector

private:

vector

infolist;

};int main()

);}

在這個例子中我們遇到了乙個』複雜』的資料-由三個int組成的結構體,我們不知道如何對其進行排序,所以我們的sort函式提供了乙個引數,用於接受比較函式,在例子中提供的函式依據結構體中的a值進行比較,那麼sort就會依據這個演算法進行排序。

設計模式C 實現(2) 策略模式

對外的介面一樣,只是各自實現上存在差異。用策略模式來封裝演算法,效果比較好。下面以快取記憶體 cache 的替換演算法為例,實現策略模式。抽象介面 class replacealgorithm 三種具體的替換演算法 class lru replacealgorithm public replacea...

設計模式 策略模式 2

設計模式,先說設計模式吧,對於設計模式而言,這裡邊把事物具體抽象出來,就剩下什麼了?就剩下 如何用乙個良好的結構儲存資料?然後如何用乙個擴充套件性強,可維護性高的操作,來實現這些資料的操作與控制 好了,感言說完了,接下來就是,聊一聊設計模式中的 策略模式!對於策略模式而言,有乙個比較好的例子,那就是...

2 設計模式 策略模式

定義 它定義了演算法家族,分別封裝起來,讓他們之間可以互相替換,此模式讓演算法的變化,不會直接影響到用演算法的客戶。模式分析 策略模式是一種定義一系列演算法的模式,完成的工作相同,只是由於實現不同,所以以相同的方式呼叫,減少了各種演算法類與使用演算法類之間的耦合。策略模式可以封裝任何型別的規則,實踐...