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 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!