c++ 策略模式
时间: 2023-06-28 13:05:21 浏览: 105
C++中的策略模式是一种行为型设计模式,它允许在运行时选择算法的不同实现。该模式定义了一组算法,将它们各自封装起来,并使它们可以互换。
在C++中,可以使用函数指针、函数对象或Lambda表达式来实现策略模式。以下是一个简单的示例:
```c++
#include <iostream>
class SortingStrategy {
public:
virtual void sort(int* arr, int n) = 0;
};
class BubbleSort : public SortingStrategy {
public:
void sort(int* arr, int n) {
// Bubble sort implementation
std::cout << "Sorting using bubble sort." << std::endl;
}
};
class QuickSort : public SortingStrategy {
public:
void sort(int* arr, int n) {
// Quick sort implementation
std::cout << "Sorting using quick sort." << std::endl;
}
};
class Sorter {
private:
SortingStrategy* strategy;
public:
void setSortingStrategy(SortingStrategy* newStrategy) {
strategy = newStrategy;
}
void sort(int* arr, int n) {
strategy->sort(arr, n);
}
};
int main() {
int arr[] = {5, 2, 9, 3, 6};
int n = sizeof(arr) / sizeof(arr[0]);
Sorter sorter;
BubbleSort bubbleSort;
sorter.setSortingStrategy(&bubbleSort);
sorter.sort(arr, n);
QuickSort quickSort;
sorter.setSortingStrategy(&quickSort);
sorter.sort(arr, n);
return 0;
}
```
在上面的示例中,SortingStrategy是抽象策略类,BubbleSort和QuickSort是具体策略类。Sorter是使用策略模式的上下文类,它可以使用setSortingStrategy方法设置当前使用的SortingStrategy实现,并在sort方法中使用该实现对输入数组进行排序。
运行上面的代码将输出:
```
Sorting using bubble sort.
Sorting using quick sort.
```
这表明程序成功地使用了策略模式来选择不同的排序算法实现。
阅读全文