Rumah > Artikel > pembangunan bahagian belakang > Kes aplikasi corak reka bentuk dalam C++
Ya, corak reka bentuk digunakan secara meluas dalam C++. Corak Pemerhati ialah hubungan satu dengan satu di mana satu objek (pengetua) menguruskan objek bergantung (pemerhati) dan memberitahu mereka tentang perubahan keadaan. Dalam contoh ini, data cuaca (subjek) memberitahu paparan (pemerhati) perubahan keadaan, dengan itu mengemas kini paparan. Corak reka bentuk menyediakan penyelesaian yang terbukti untuk mencipta kod yang lebih fleksibel dan boleh diselenggara.
Kes aplikasi corak reka bentuk dalam C++
Corak reka bentuk ialah penyelesaian boleh guna semula kepada masalah pembangunan perisian biasa. Mereka menyediakan satu set amalan terbaik terbukti yang boleh membantu pembangun mencipta kod yang lebih fleksibel dan boleh diselenggara.
Corak Pemerhati
Corak Pemerhati mentakrifkan hubungan satu dengan satu di mana satu objek (subjek) mengurus set objek bergantung (pemerhati). Apabila keadaan subjek berubah, ia memberitahu semua pemerhati supaya mereka boleh mengemas kini dengan sewajarnya.
Pelaksanaan:
#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; }
Output:
Observer 1 notified, subject state: 10 Observer 2 notified, subject state: 10 Observer 1 notified, subject state: 20 Observer 2 notified, subject state: 20
Dalam contoh ini, Subject
是天气数据,Observer
是两个显示屏。当天气数据发生变化(setSubjectState
)时,它会通知显示屏(notifyObservers
),显示屏会更新其显示的内容(update
).
Kesimpulan:
Corak reka bentuk menyediakan penyelesaian terbukti yang boleh membantu pembangun mencipta kod yang lebih fleksibel dan boleh diselenggara. Corak Observer hanyalah satu daripada banyak corak reka bentuk yang digunakan secara meluas dalam C++ dan bahasa lain.
Atas ialah kandungan terperinci Kes aplikasi corak reka bentuk dalam C++. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!