Maison >développement back-end >C++ >Interaction entre les modèles de conception et la bibliothèque de modèles standard (STL) en C++

Interaction entre les modèles de conception et la bibliothèque de modèles standard (STL) en C++

WBOY
WBOYoriginal
2024-05-31 17:52:00496parcourir

Les modèles de conception combinés avec STL créent un code plus flexible, réutilisable et maintenable. En combinant STL (fournissant des structures de données et des algorithmes de base) et des modèles de conception (fournissant un cadre pour organiser le code), tels que le modèle d'observateur et des exemples pratiques de listes, les observateurs peuvent être ajoutés et supprimés dynamiquement, améliorant ainsi la flexibilité et la réutilisabilité du code.

Interaction entre les modèles de conception et la bibliothèque de modèles standard (STL) en C++

Interaction entre les modèles de conception et STL en C++

Les modèles de conception sont un ensemble de solutions réutilisables en génie logiciel, tandis que la bibliothèque de modèles standard (STL) est une puissante bibliothèque de conteneurs et d'algorithmes en C++.

Pourquoi utiliser des modèles de conception avec STL ?

En combinant des modèles de conception avec STL, vous pouvez créer un code plus flexible, réutilisable et facile à entretenir. STL fournit des structures de données et des algorithmes de base, tandis que les modèles de conception fournissent un cadre pour organiser et structurer le code.

Cas pratique : modèle d'observateur et listes

Considérons un cas pratique du modèle d'observateur, où plusieurs observateurs peuvent s'abonner à un sujet et recevoir des notifications de changements de statut du sujet. Nous pouvons utiliser des listes STL pour gérer les observateurs :

#include <list>
#include <iostream>

using namespace std;

class Subject {
public:
    void attach(Observer* observer) { observers_.push_back(observer); }
    void detach(Observer* observer) { observers_.remove(observer); }
    void notify() {
        for (auto& observer : observers_) {
            observer->update();
        }
    }

private:
    list<Observer*> observers_;
};

class Observer {
public:
    virtual void update() = 0;
};

class ConcreteObserverA : public Observer {
public:
    void update() { cout << "ConcreteObserverA notified.\n"; }
};

class ConcreteObserverB : public Observer {
public:
    void update() { cout << "ConcreteObserverB notified.\n"; }
};

int main() {
    Subject subject;
    ConcreteObserverA observerA;
    ConcreteObserverB observerB;

    subject.attach(&observerA);
    subject.attach(&observerB);
    subject.notify();

    return 0;
}

Avantages

  • L'utilisation de listes STL pour gérer les observateurs fournit des fonctions de stockage et d'accès sous-jacentes.
  • La combinaison du modèle d'observateur et des listes STL permet l'ajout et la suppression dynamiques d'observateurs.
  • Cela rend le code plus flexible et réutilisable.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn