Maison  >  Article  >  développement back-end  >  Cas d'application des modèles de conception en C++

Cas d'application des modèles de conception en C++

WBOY
WBOYoriginal
2024-06-01 20:14:00836parcourir

Oui, les modèles de conception sont largement utilisés en C++. Le modèle Observer est une relation un-à-un dans laquelle un objet (le principal) gère les objets dépendants (les observateurs) et les informe des changements d'état. Dans cet exemple, les données météorologiques (le sujet) notifient l'affichage (l'observateur) des changements d'état, mettant ainsi à jour l'affichage. Les modèles de conception fournissent des solutions éprouvées pour créer un code plus flexible et plus maintenable.

Cas dapplication des modèles de conception en C++

Cas d'application des modèles de conception en C++

Les modèles de conception sont des solutions réutilisables aux problèmes courants de développement logiciel. Ils fournissent un ensemble de bonnes pratiques éprouvées qui peuvent aider les développeurs à créer un code plus flexible et plus maintenable.

Modèle Observateur

Le modèle Observateur définit une relation un-à-un dans laquelle un objet (sujet) gère un ensemble d'objets dépendants (observateurs). Lorsque l'état du sujet change, il en informe tous les observateurs afin qu'ils puissent se mettre à jour en conséquence.

Mise en œuvre :

#include <iostream>
#include <vector>

class Subject {
public:
    void addObserver(Observer* obs) { observers.push_back(obs); }
    void removeObserver(Observer* obs) { observers.erase(observers.begin() + find(observers.begin(), observers.end(), obs)); }
    void notifyObservers() { for (Observer* obs : observers) obs->update(); }
    int getSubjectState() const { return subjectState; }
    void setSubjectState(int state) { subjectState = state; notifyObservers(); }

private:
    int subjectState;
    std::vector<Observer*> observers;
};

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

class Observer1 : public Observer {
public:
    void update() { std::cout << "Observer 1 notified, subject state: " << subject->getSubjectState() << "\n"; }
    Subject* subject;
};

class Observer2 : public Observer {
public:
    void update() { std::cout << "Observer 2 notified, subject state: " << subject->getSubjectState() << "\n"; }
    Subject* subject;
};

int main() {
    Subject subject;
    Observer1 observer1;
    observer1.subject = &subject;
    Observer2 observer2;
    observer2.subject = &subject;

    subject.addObserver(&observer1);
    subject.addObserver(&observer2);

    subject.setSubjectState(10);
    subject.setSubjectState(20);

    return 0;
}

Sortie :

Observer 1 notified, subject state: 10
Observer 2 notified, subject state: 10
Observer 1 notified, subject state: 20
Observer 2 notified, subject state: 20

Dans cet exemple, Subject 是天气数据,Observer 是两个显示屏。当天气数据发生变化(setSubjectState)时,它会通知显示屏(notifyObservers),显示屏会更新其显示的内容(update).

Conclusion :

Les modèles de conception fournissent des solutions éprouvées qui peuvent aider les développeurs à créer un code plus flexible et plus maintenable. Le modèle Observer n’est que l’un des nombreux modèles de conception largement utilisés en C++ et dans d’autres langages.

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