C++ 類別設計中常用的設計模式包括:單例模式:確保一個類別只有一個實例。工廠方法模式:建立物件而不指定具體類,允許子類別改變實例化過程。觀察者模式:定義物件間的一對多依賴,當一個物件改變時,其他依賴物件會收到通知並更新。
#設計模式是軟體設計中常見問題的通用解決方案。它們提供了一種結構化和可重複使用的方法來建立軟體,從而提高了程式碼的可維護性、可擴展性和靈活性。
在 C++ 中,一些常用的設計模式包括:
範例程式碼:
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; }
範例程式碼:
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(); } };
範例程式碼:
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 { // ... } };
以上是C++類別設計中常用的設計模式有哪些?的詳細內容。更多資訊請關注PHP中文網其他相關文章!