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

溫馨提示×

如何用C++反射實現依賴注入

c++
小樊
84
2024-09-10 18:16:23
欄目: 編程語言

在 C++ 中,我們可以使用模板和工廠函數來實現依賴注入。這里是一個簡單的例子:

首先,定義一個接口 IService 和實現該接口的類 ServiceAServiceB

#include<iostream>
#include<memory>

// 定義接口
class IService {
public:
    virtual void execute() = 0;
};

// 實現類 ServiceA
class ServiceA : public IService {
public:
    void execute() override {
        std::cout << "ServiceA is executing."<< std::endl;
    }
};

// 實現類 ServiceB
class ServiceB : public IService {
public:
    void execute() override {
        std::cout << "ServiceB is executing."<< std::endl;
    }
};

然后,創建一個工廠函數,根據輸入參數創建不同類型的服務對象:

std::unique_ptr<IService> createService(const std::string& serviceType) {
    if (serviceType == "ServiceA") {
        return std::make_unique<ServiceA>();
    } else if (serviceType == "ServiceB") {
        return std::make_unique<ServiceB>();
    } else {
        throw std::invalid_argument("Invalid service type.");
    }
}

最后,通過依賴注入將服務對象傳遞給需要它的類:

class Client {
public:
    explicit Client(std::unique_ptr<IService> service) : m_service(std::move(service)) {}

    void doWork() {
        m_service->execute();
    }

private:
    std::unique_ptr<IService> m_service;
};

在主函數中,我們可以根據需要選擇具體的服務類型,并將其注入到客戶端中:

int main() {
    // 選擇具體的服務類型
    std::string serviceType = "ServiceA";

    // 使用工廠函數創建服務對象
    auto service = createService(serviceType);

    // 將服務對象注入到客戶端中
    Client client(std::move(service));

    // 客戶端執行操作
    client.doWork();

    return 0;
}

這樣,我們就實現了基于 C++ 的依賴注入。當需要更改具體的服務實現時,只需修改 main() 函數中的 serviceType 變量即可,而無需修改客戶端代碼。

0
涟水县| 新田县| 林西县| 舒城县| 樟树市| 锡林浩特市| 乌拉特后旗| 迭部县| 景宁| 怀仁县| 宁阳县| 文山县| 民丰县| 龙海市| 公安县| 美姑县| 凤冈县| 中方县| 广西| 金沙县| 利津县| 长春市| 奇台县| 韶关市| 鸡西市| 东乡族自治县| 旬邑县| 兖州市| 龙泉市| 成安县| 宜君县| 朝阳县| 孝昌县| 泸西县| 镇原县| 张家港市| 涟源市| 南澳县| 西盟| 彩票| 丰原市|