91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

C++ Cookbook中的設計模式解析

c++
小樊
83
2024-08-29 18:53:26
欄目: 編程語言

《C++ Cookbook》是一本關于C++編程的實用指南,其中包含了許多設計模式的實現方法

  1. 單例模式(Singleton Pattern):確保一個類只有一個實例,并提供一個全局訪問點。這在需要全局唯一資源或共享狀態的場景中非常有用。
class Singleton {
public:
    static Singleton& getInstance() {
        static Singleton instance;
        return instance;
    }

    Singleton(const Singleton&) = delete;
    Singleton& operator=(const Singleton&) = delete;

private:
    Singleton() {}
};
  1. 工廠模式(Factory Pattern):定義一個創建對象的接口,讓子類決定實例化哪個類。這有助于解耦對象的創建和使用。
class Product {
public:
    virtual void use() = 0;
};

class ConcreteProductA : public Product {
public:
    void use() override {
        // ...
    }
};

class ConcreteProductB : public Product {
public:
    void use() 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();
    }
};
  1. 觀察者模式(Observer Pattern):當一個對象的狀態發生變化時,自動通知所有依賴于它的觀察者。這有助于實現松耦合的系統。
#include<vector>
#include<algorithm>

class Observer {
public:
    virtual void update() = 0;
};

class Subject {
public:
    void addObserver(Observer* observer) {
        observers.push_back(observer);
    }

    void removeObserver(Observer* observer) {
        observers.erase(std::remove(observers.begin(), observers.end(), observer), observers.end());
    }

    void notifyObservers() {
        for (auto observer : observers) {
            observer->update();
        }
    }

private:
    std::vector<Observer*> observers;
};
  1. 適配器模式(Adapter Pattern):將一個類的接口轉換成客戶端期望的另一個接口。這有助于在不修改現有代碼的情況下,使不兼容的接口能夠一起工作。
class Target {
public:
    virtual void request() = 0;
};

class Adaptee {
public:
    void specificRequest() {
        // ...
    }
};

class Adapter : public Target {
public:
    void request() override {
        adaptee.specificRequest();
    }

private:
    Adaptee adaptee;
};

這些設計模式只是《C++ Cookbook》中的一部分內容,書中還包含了許多其他實用的C++編程技巧和最佳實踐。如果你對這些設計模式感興趣,可以考慮閱讀這本書以獲取更多詳細信息和示例。

0
加查县| 白河县| 嵊州市| 错那县| 乌拉特后旗| 漳州市| 黄浦区| 南通市| 孟津县| 兴和县| 乌拉特后旗| 鄂伦春自治旗| 启东市| 天气| 全椒县| 昌都县| 柳林县| 内黄县| 工布江达县| 武义县| 光泽县| 竹溪县| 青河县| 尉犁县| 静乐县| 浦江县| 乐东| 台东县| 呼图壁县| 新疆| 蒙阴县| 宿州市| 长子县| 元氏县| 张北县| 邻水| 金湖县| 唐海县| 济源市| 蒙城县| 富源县|