亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

搜索

C++如何實現(xiàn)策略模式選擇算法

P粉602998670
發(fā)布: 2025-09-18 16:12:01
原創(chuàng)
463人瀏覽過
策略模式通過抽象接口將算法封裝為獨(dú)立類,實現(xiàn)運(yùn)行時動態(tài)切換。定義SortStrategy基類聲明sort虛函數(shù),BubbleSort、QuickSort、MergeSort等具體類實現(xiàn)各自算法。Sorter上下文類持SortStrategy指針,通過setStrategy更換策略,performSort調(diào)用當(dāng)前策略的排序方法。客戶端可靈活切換算法,新增策略無需修改現(xiàn)有代碼,符合開閉原則,避免大量條件判斷,提升可維護(hù)性與擴(kuò)展性。

c++如何實現(xiàn)策略模式選擇算法

在C++中實現(xiàn)策略模式選擇算法,核心是將不同算法封裝成獨(dú)立的類,并通過統(tǒng)一接口在運(yùn)行時動態(tài)切換。這種方式避免了使用大量條件判斷(如 if/else 或 switch),提高代碼的可擴(kuò)展性和可維護(hù)性。

定義策略接口

策略模式從一個抽象基類開始,該基類聲明算法的公共接口。通常是一個虛函數(shù),供具體策略類重寫。

示例:

假設(shè)我們要實現(xiàn)不同的排序算法作為策略:

class SortStrategy {<br>
public:<br>
   &virtual ~SortStrategy() = default;<br>
   &virtual void sort(std::vector<int>& data) const = 0;<br>
};<br>
登錄后復(fù)制

實現(xiàn)具體策略

每個具體算法繼承自策略基類,并實現(xiàn)自己的邏輯。

立即學(xué)習(xí)C++免費(fèi)學(xué)習(xí)筆記(深入)”;

算家云
算家云

高效、便捷的人工智能算力服務(wù)平臺

算家云37
查看詳情 算家云

class BubbleSort : public SortStrategy {<br>
public:<br>
   &void sort(std::vector<int>& data) const override {<br>
      &// 冒泡排序?qū)崿F(xiàn)<br>
   &}<br>
};<br><br><p>class QuickSort : public SortStrategy {<br>
public:<br>
   &void sort(std::vector<int>& data) const override {<br>
      &// 快速排序?qū)崿F(xiàn)<br>
   &}<br>
};<br><br></p><p>class MergeSort : public SortStrategy {<br>
public:<br>
   &void sort(std::vector<int>& data) const override {<br>
      &// 歸并排序?qū)崿F(xiàn)<br>
   &}<br>
};<br>
登錄后復(fù)制

上下文類使用策略

Context 類持有策略對象的指針或引用,客戶端可在運(yùn)行時指定使用的算法。

class Sorter {<br>
private:<br>
   &const SortStrategy* strategy;<br><br>
public:<br>
   &Sorter(const SortStrategy* s) : strategy(s) {}<br><br>
   &void setStrategy(const SortStrategy* s) {<br>
      &strategy = s;<br>
   &}<br><br>
   &void performSort(std::vector<int>& data) const {<br>
      &if (strategy)<br>
        & strategy->sort(data);<br>
   &}<br>
};<br>
登錄后復(fù)制

客戶端使用示例

根據(jù)需求切換不同算法,無需修改核心邏輯。

int main() {<br>
   &std::vector<int> data = {5, 2, 9, 1, 5};<br><br>
   &BubbleSort bubble;<br>
   &QuickSort quick;<br><br>
   &Sorter sorter(&bubble);<br>
   &sorter.performSort(data); // 使用冒泡排序<br><br>
   &sorter.setStrategy(&quick);<br>
   &sorter.performSort(data); // 切換為快速排序<br><br>
   &return 0;<br>
}<br>
登錄后復(fù)制

這種設(shè)計讓算法獨(dú)立變化,新增策略只需添加新類,不改動已有代碼。符合開閉原則,適合需要靈活替換算法的場景。

基本上就這些。關(guān)鍵在于抽象接口和運(yùn)行時綁定,用組合代替條件分支。

以上就是C++如何實現(xiàn)策略模式選擇算法的詳細(xì)內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!

最佳 Windows 性能的頂級免費(fèi)優(yōu)化軟件
最佳 Windows 性能的頂級免費(fèi)優(yōu)化軟件

每個人都需要一臺速度更快、更穩(wěn)定的 PC。隨著時間的推移,垃圾文件、舊注冊表數(shù)據(jù)和不必要的后臺進(jìn)程會占用資源并降低性能。幸運(yùn)的是,許多工具可以讓 Windows 保持平穩(wěn)運(yùn)行。

下載
來源:php中文網(wǎng)
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系admin@php.cn
最新問題
開源免費(fèi)商場系統(tǒng)廣告
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
關(guān)于我們 免責(zé)申明 意見反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓(xùn),幫助PHP學(xué)習(xí)者快速成長!
關(guān)注服務(wù)號 技術(shù)交流群
PHP中文網(wǎng)訂閱號
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時隨地碎片化學(xué)習(xí)
PHP中文網(wǎng)抖音號
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號