中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

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
鸡泽县| 湘潭市| 清河县| 上杭县| 镇远县| 前郭尔| 平利县| 上犹县| 黄龙县| 额济纳旗| 格尔木市| 平潭县| 香格里拉县| 宝鸡市| 崇文区| 广州市| 柞水县| 尚义县| 石首市| 常宁市| 青州市| 潼南县| 万山特区| 民乐县| 庆城县| 永靖县| 临夏市| 林芝县| 南川市| 丹阳市| 鹤庆县| 美姑县| 阜宁县| 城固县| 嘉定区| 出国| 乐山市| 滦南县| 蓝山县| 翼城县| 绥江县|