Les étapes pour implémenter le modèle de stratégie en C++ sont les suivantes : définir l'interface de stratégie et déclarer les méthodes qui doivent être exécutées. Créez des classes de stratégie spécifiques, implémentez l'interface respectivement et fournissez différents algorithmes. Utilisez une classe de contexte pour contenir une référence à une classe de stratégie concrète et effectuer des opérations via celle-ci.
Comment implémenter le modèle de conception de stratégie en C++
Introduction
Le modèle de stratégie est un modèle de conception comportemental qui vous permet de modifier un algorithme ou un comportement au moment de l'exécution sans modifier le code client. Cela vous donne la possibilité de changer d'algorithme sans modifier les références à ceux-ci.
Implémentation du modèle de stratégie
L'implémentation du modèle de stratégie en C++ nécessite plusieurs étapes :
Exemple pratique
Supposons que vous disposiez d'un algorithme de tri qui nécessite différents algorithmes de comparaison. Vous pouvez facilement y parvenir en utilisant Strategy Pattern.
Interface de stratégie de base :
class Comparator { public: virtual bool compare(int a, int b) = 0; };
Classe de stratégie spécifique :
class AscendingComparator : public Comparator { public: bool compare(int a, int b) override { return a < b; } }; class DescendingComparator : public Comparator { public: bool compare(int a, int b) override { return a > b; } };
Classe de contexte :
class Sorter { public: Sorter(Comparator* comparator) : comparator(comparator) {} void sort(int* arr, int size) { for (int i = 0; i < size - 1; i++) { for (int j = i + 1; j < size; j++) { if (comparator->compare(arr[i], arr[j])) { std::swap(arr[i], arr[j]); } } } } private: Comparator* comparator; };
Utilisation :
int main() { int arr[] = {5, 3, 1, 2, 4}; int size = sizeof(arr) / sizeof(int); Sorter sorter(new AscendingComparator()); sorter.sort(arr, size); for (int i = 0; i < size; i++) { cout << arr[i] << " "; // Output: 1 2 3 4 5 } cout << "\n"; sorter.setComparator(new DescendingComparator()); sorter.sort(arr, size); for (int i = 0; i < size; i++) { cout << arr[i] << " "; // Output: 5 4 3 2 1 } cout << "\n"; return 0; }
Dans cet exemple, Sorter
类可以根据提供的比较策略对数组进行排序。通过更换比较策略,我们可以轻松地在升序和降序排序之间切换,而无需修改 Sorter
logique.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!