Kes aplikasi corak reka bentuk dalam C++

WBOY
Lepaskan: 2024-06-01 20:14:00
asal
889 orang telah melayarinya

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

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;
}
Salin selepas log masuk

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
Salin selepas log masuk

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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan