中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

網(wǎng)站域名更換是怎么做的網(wǎng)站是怎么做出來的

網(wǎng)站域名更換是怎么做的,網(wǎng)站是怎么做出來的,滄州萬網(wǎng)信息技術有限公司,免費個人網(wǎng)站域名注冊C那些事之依賴注入 最近星球里面有個小伙伴讓更新一下依賴注入,于是寫出了這篇文章,來從實際的例子講解,本文會講解一些原理與實現(xiàn),完整的實現(xiàn)代碼懶人版放在星球中,我們開始正文。 大綱: 直接依賴接口依賴…

C++那些事之依賴注入

最近星球里面有個小伙伴讓更新一下依賴注入,于是寫出了這篇文章,來從實際的例子講解,本文會講解一些原理與實現(xiàn),完整的實現(xiàn)代碼懶人版放在星球中,我們開始正文。

大綱:

  • 直接依賴

  • 接口依賴注入

  • 模版依賴注入

依賴注入是一種常用的設計模式,通常會采用接口/模版的方式提高代碼的可測性與維護性,下面我們來舉個例子。

假設有一個用戶服務類UserService,需要通過HTTP客戶端與遠程服務器進行通信,在這種情況下我們可能會寫出如下三種實現(xiàn)。

ce3ea3a333742336550a2dc7fa8e704f.png

1.直接依賴

UserService內(nèi)部直接依賴HttpClient,例如:

class?HttpClient?{public:std::string?Get(const?std::string&?url);void?Post(const?std::string&?url,?const?std::string&?data);
};class?UserService?{private:HttpClient?m_httpClient;
};

UserService內(nèi)部通常會有一些方法去操作m_httpClient,這種方式簡單粗暴,但是UserService與具體的HttpClient相耦合,導致難以替換依賴對象,也難以進行單元測試。

于是引出了后面兩個方法。

2.接口依賴注入

我們的目標是期望測試的時候很方便的測試,而不需要創(chuàng)建一個具體的類,可以由用戶mock出一個類去測試,那么我們可以想到接口,將HttpClient抽出來,得到:

struct?IHttpClient?{virtual?std::string?Get(const?std::string&?url)?=?0;virtual?void?Post(const?std::string&?url,?const?std::string&?data)?=?0;virtual?~IHttpClient()?=?default;
};
class?UserService?{private:std::unique_ptr<IHttpClient>?m_httpClient;
};

那么在測試的時候便可以mock出一個client進行測試,例如:

class?MockHttpClient?:?public?IHttpClient?{
public:MOCK_METHOD(std::string,?Get,?(const?std::string&?url),?(override));MOCK_METHOD(void,?Post,?(const?std::string&?url,?const?std::string&?data),?(override));
};auto?mockHttpClient?=?std::make_unique<MockHttpClient>();
UserService?userService(std::move(mockHttpClient));

經(jīng)過以上改造,我們可以做到:

  • 在 .cc 文件中隱藏實現(xiàn)細節(jié)

  • 針對抽象接口工作

  • 在對象構造期間注入依賴項

3.模版依賴注入

模板依賴注入通過C++模板技術,將依賴對象作為模板參數(shù)傳遞給UserService。在實例化模板時,指定具體的HTTP客戶端實現(xiàn)。這種方法在編譯時解決依賴問題,無需虛函數(shù)調用,提高了性能。同時,也使得UserService類可以靈活地與不同的HTTP客戶端實現(xiàn)進行集成,并且易于進行單元測試。

template?<typename?THttpClient>
class?UserService?{private:THttpClient?m_httpClient;
};

在這種情況下比較好測試,例如:

UserService<MockHttpClient>?userService;

這種方式有如下好處:

  • 在模板實例化期間注入依賴項

  • 無需虛擬調用(注意 THttpClient 不是接口,因此可以在編譯時解析調用)

以上便是本節(jié)要講的所有內(nèi)容,本節(jié)完整代碼放于星球,歡迎訂閱下載!

跟我一起實踐寫代碼,戳這里呀~

118afdd0374239d7947f367bf69ea2b0.jpeg

往期推薦:

向量數(shù)據(jù)庫milvus源碼剖析之開篇

熱度更新,手把手實現(xiàn)工業(yè)級線程池

d46b02d51af29b0cc49013a36bc758ce.jpeg

http://www.risenshineclean.com/news/52918.html

相關文章:

  • 可信網(wǎng)站值得做嗎seo推廣專員工作內(nèi)容
  • 河源今日新聞頭條火災優(yōu)化設計四年級上冊語文答案
  • 重慶涪陵網(wǎng)站建設南寧百度推廣seo
  • 網(wǎng)站推廣方案的構成整站優(yōu)化服務
  • 模板網(wǎng)站音響案例數(shù)字營銷包括哪六種方式
  • 網(wǎng)站內(nèi)容管理系統(tǒng)建站企業(yè)網(wǎng)站
  • 內(nèi)蒙古網(wǎng)站建設價格輿情網(wǎng)站入口
  • 做視頻網(wǎng)站需要多大帶寬微網(wǎng)站建站平臺
  • 網(wǎng)站建設維護協(xié)議書北海百度seo
  • 品牌網(wǎng)站建設精湛磐石網(wǎng)絡百度登錄賬號首頁
  • 合作建站方案關鍵詞優(yōu)化和seo
  • 優(yōu)化是企業(yè)通過網(wǎng)站來做嗎怎么制作小程序
  • 幫忙做網(wǎng)站花西子網(wǎng)絡營銷案例分析
  • 怎么找做網(wǎng)站的人視頻號最新動作
  • 怎么做代理人金沙網(wǎng)站seo的內(nèi)容有哪些
  • 想象力做網(wǎng)站百度官方推廣平臺
  • 房地產(chǎn) 網(wǎng)站模板南寧百度seo優(yōu)化
  • 網(wǎng)站備案入口營銷活動推廣策劃
  • 怎么樣可以設計網(wǎng)站搜索引擎優(yōu)化的具體措施
  • 天津市城鄉(xiāng)建設網(wǎng)網(wǎng)站優(yōu)化的意義
  • 手機百度網(wǎng)頁版 入口seo網(wǎng)站優(yōu)化平臺
  • 怎樣在工商局網(wǎng)站做公示網(wǎng)絡營銷案例及分析
  • 專門做干果批發(fā)的網(wǎng)站國際新聞頭條今日國際大事
  • 東莞網(wǎng)站建設推廣公司哪家好如何推廣app賺錢
  • 亞馬遜網(wǎng)官網(wǎng)首頁四川seo平臺
  • 做相冊本哪個網(wǎng)站好用嗎短視頻推廣
  • 制作網(wǎng)站公石家莊谷歌seo
  • 做公司網(wǎng)站需要會什么一鍵優(yōu)化表格
  • 有哪些做微博長圖網(wǎng)站澤成seo網(wǎng)站排名
  • 辦文明網(wǎng)站 做文明網(wǎng)民活動關鍵詞查詢網(wǎng)