Rumah > Artikel > pembangunan bahagian belakang > Apakah corak reka bentuk yang biasa digunakan dalam reka bentuk kelas C++?
Corak reka bentuk biasa dalam reka bentuk kelas C++ termasuk: Corak Singleton: Pastikan kelas hanya mempunyai satu contoh. Corak Kaedah Kilang: Mencipta objek tanpa menentukan kelas konkrit, membenarkan subkelas menukar proses instantiasi. Corak pemerhati: Tentukan kebergantungan satu kepada banyak antara objek Apabila satu objek berubah, objek bergantung lain akan menerima pemberitahuan dan kemas kini.
Corak reka bentuk ialah penyelesaian universal kepada masalah biasa dalam reka bentuk perisian. Mereka menyediakan pendekatan berstruktur dan boleh diguna semula untuk membina perisian, meningkatkan kebolehselenggaraan kod, kebolehskalaan dan fleksibiliti.
Dalam C++, beberapa corak reka bentuk yang biasa digunakan termasuk:
Contoh kod:
class Singleton { private: static Singleton* instance; Singleton(); public: static Singleton* getInstance(); void doSomething(); }; Singleton* Singleton::instance = nullptr; Singleton* Singleton::getInstance() { if (instance == nullptr) { instance = new Singleton(); } return instance; }
Contoh kod:
class Product { public: virtual void operation() = 0; }; class ConcreteProductA : public Product { public: void operation() override { // ... } }; class ConcreteProductB : public Product { public: void operation() override { // ... } }; class Factory { public: virtual Product* createProduct() = 0; }; class ConcreteFactoryA : public Factory { public: Product* createProduct() override { return new ConcreteProductA(); } }; class ConcreteFactoryB : public Factory { public: Product* createProduct() override { return new ConcreteProductB(); } };
Contoh kod:
class Observable { public: virtual void addObserver(Observer* observer) = 0; virtual void removeObserver(Observer* observer) = 0; virtual void notifyObservers() = 0; }; class Observer { public: virtual void update(Observable* observable) = 0; }; class ConcreteObservable : public Observable { private: std::vector<Observer*> observers; public: void addObserver(Observer* observer) override { observers.push_back(observer); } void removeObserver(Observer* observer) override { observers.erase(std::remove(observers.begin(), observers.end(), observer), observers.end()); } void notifyObservers() override { for (auto observer : observers) { observer->update(this); } } void doSomething() { // ... notifyObservers(); } }; class ConcreteObserverA : public Observer { public: void update(Observable* observable) override { // ... } }; class ConcreteObserverB : public Observer { public: void update(Observable* observable) override { // ... } };
Atas ialah kandungan terperinci Apakah corak reka bentuk yang biasa digunakan dalam reka bentuk kelas C++?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!