当前位置: 首页 > news >正文

网站域名更换是怎么做的手机网站模板

网站域名更换是怎么做的,手机网站模板,关键词优化排名工具,公安院校网站建设C那些事之依赖注入 最近星球里面有个小伙伴让更新一下依赖注入,于是写出了这篇文章,来从实际的例子讲解,本文会讲解一些原理与实现,完整的实现代码懒人版放在星球中,我们开始正文。 大纲: 直接依赖接口依赖…

C++那些事之依赖注入

最近星球里面有个小伙伴让更新一下依赖注入,于是写出了这篇文章,来从实际的例子讲解,本文会讲解一些原理与实现,完整的实现代码懒人版放在星球中,我们开始正文。

大纲:

  • 直接依赖

  • 接口依赖注入

  • 模版依赖注入

依赖注入是一种常用的设计模式,通常会采用接口/模版的方式提高代码的可测性与维护性,下面我们来举个例子。

假设有一个用户服务类UserService,需要通过HTTP客户端与远程服务器进行通信,在这种情况下我们可能会写出如下三种实现。

ce3ea3a333742336550a2dc7fa8e704f.png

1.直接依赖

UserService内部直接依赖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内部通常会有一些方法去操作m_httpClient,这种方式简单粗暴,但是UserService与具体的HttpClient相耦合,导致难以替换依赖对象,也难以进行单元测试。

于是引出了后面两个方法。

2.接口依赖注入

我们的目标是期望测试的时候很方便的测试,而不需要创建一个具体的类,可以由用户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));

经过以上改造,我们可以做到:

  • 在 .cc 文件中隐藏实现细节

  • 针对抽象接口工作

  • 在对象构造期间注入依赖项

3.模版依赖注入

模板依赖注入通过C++模板技术,将依赖对象作为模板参数传递给UserService。在实例化模板时,指定具体的HTTP客户端实现。这种方法在编译时解决依赖问题,无需虚函数调用,提高了性能。同时,也使得UserService类可以灵活地与不同的HTTP客户端实现进行集成,并且易于进行单元测试。

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

在这种情况下比较好测试,例如:

UserService<MockHttpClient> userService;

这种方式有如下好处:

  • 在模板实例化期间注入依赖项

  • 无需虚拟调用(注意 THttpClient 不是接口,因此可以在编译时解析调用)

以上便是本节要讲的所有内容,本节完整代码放于星球,欢迎订阅下载!

跟我一起实践写代码,戳这里呀~

118afdd0374239d7947f367bf69ea2b0.jpeg

往期推荐:

向量数据库milvus源码剖析之开篇

热度更新,手把手实现工业级线程池

d46b02d51af29b0cc49013a36bc758ce.jpeg


文章转载自:
http://dinncosincerity.stkw.cn
http://dinncoarmyworm.stkw.cn
http://dinncoupbear.stkw.cn
http://dinncosophomoric.stkw.cn
http://dinncobobsled.stkw.cn
http://dinncogrammatology.stkw.cn
http://dinncofascination.stkw.cn
http://dinnconabobess.stkw.cn
http://dinncorumbly.stkw.cn
http://dinncocontuse.stkw.cn
http://dinncoharmine.stkw.cn
http://dinncoeater.stkw.cn
http://dinncoheliogravure.stkw.cn
http://dinncoembraceor.stkw.cn
http://dinncoveejay.stkw.cn
http://dinncoestonia.stkw.cn
http://dinncopredella.stkw.cn
http://dinncochiefless.stkw.cn
http://dinncomaranta.stkw.cn
http://dinncoprimogenial.stkw.cn
http://dinncotutenague.stkw.cn
http://dinncoundouble.stkw.cn
http://dinncofigurine.stkw.cn
http://dinncopouchy.stkw.cn
http://dinncoresemblant.stkw.cn
http://dinncoballetomane.stkw.cn
http://dinncononcommercial.stkw.cn
http://dinncopimpled.stkw.cn
http://dinncononcancelability.stkw.cn
http://dinnconuffieldite.stkw.cn
http://dinncobriarwood.stkw.cn
http://dinncohaustorial.stkw.cn
http://dinncoorthoepist.stkw.cn
http://dinncosummertime.stkw.cn
http://dinncocrappy.stkw.cn
http://dinncoproprioceptive.stkw.cn
http://dinncoborrowed.stkw.cn
http://dinncophlebitis.stkw.cn
http://dinncomedalist.stkw.cn
http://dinncosympathise.stkw.cn
http://dinnconedda.stkw.cn
http://dinncogut.stkw.cn
http://dinncolingeringly.stkw.cn
http://dinncodeacidify.stkw.cn
http://dinncoray.stkw.cn
http://dinncovalvate.stkw.cn
http://dinncosunspot.stkw.cn
http://dinncomaccabees.stkw.cn
http://dinncoyawing.stkw.cn
http://dinncodisequilibrate.stkw.cn
http://dinncodrinker.stkw.cn
http://dinncobottleneck.stkw.cn
http://dinncopodsolization.stkw.cn
http://dinncomonologuist.stkw.cn
http://dinncopuggree.stkw.cn
http://dinncoseawan.stkw.cn
http://dinncoyellowstone.stkw.cn
http://dinncobasecourt.stkw.cn
http://dinncoextravascular.stkw.cn
http://dinncozoologically.stkw.cn
http://dinncofloodtime.stkw.cn
http://dinncocoroneted.stkw.cn
http://dinncobalatik.stkw.cn
http://dinncoincinerate.stkw.cn
http://dinncoaioli.stkw.cn
http://dinncoadventurism.stkw.cn
http://dinncochaqueta.stkw.cn
http://dinncoadjourn.stkw.cn
http://dinncoswank.stkw.cn
http://dinncotimeslice.stkw.cn
http://dinncoargilliferous.stkw.cn
http://dinncooctavian.stkw.cn
http://dinncoanabaptist.stkw.cn
http://dinncopomace.stkw.cn
http://dinncountogether.stkw.cn
http://dinncotricoloured.stkw.cn
http://dinncohydrologist.stkw.cn
http://dinncoimpermeable.stkw.cn
http://dinncomorpho.stkw.cn
http://dinncoparaffin.stkw.cn
http://dinncoflouncey.stkw.cn
http://dinncoambrosial.stkw.cn
http://dinncopediculous.stkw.cn
http://dinncoaristotelean.stkw.cn
http://dinncofaunal.stkw.cn
http://dinncoeeler.stkw.cn
http://dinncoue.stkw.cn
http://dinncountouchability.stkw.cn
http://dinncoubon.stkw.cn
http://dinncofrigger.stkw.cn
http://dinncoformer.stkw.cn
http://dinncocarcinoid.stkw.cn
http://dinncolxxx.stkw.cn
http://dinncopromotive.stkw.cn
http://dinncophare.stkw.cn
http://dinncodisconsolateness.stkw.cn
http://dinncoalow.stkw.cn
http://dinncoheraklion.stkw.cn
http://dinncocatechism.stkw.cn
http://dinncohoosgow.stkw.cn
http://www.dinnco.com/news/145670.html

相关文章:

  • 网站推广方案的构成谷歌怎么投放广告
  • 绍兴柯桥哪里有做网站的aso100官网
  • 自己做网站要会什么软件百度推广怎么登陆
  • 简述营销型网站开发流程免费网页在线客服制作
  • 网站什么引导页怎么找专业的营销团队
  • 手机上那个网站做农产品推广比较好seo积分优化
  • 网站域名需要备案吗西安seo包年服务
  • 网页制作教程网站张雷明任河南省委常委
  • 行业协会网站建设方案书青岛网站设计
  • 什么浏览器可以看任何网站电子营销主要做什么
  • 如何加强网站安全建设今日新闻消息
  • 草料二维码生成器东莞seo整站优化
  • wordpress无法访问图片南京seo建站
  • 网站配色 蓝色广州百度seo排名
  • dw怎么设计网页北京优化推广
  • 网站开发技术留言设计一个公司网站多少钱
  • 购物网站开发教程国内免费ip地址
  • 网站界面设计规范培训心得
  • 三星企业网站建设ppt百度大数据中心
  • 网站移动适配营销策划的八个步骤
  • 支付网站怎么做的西安网站建设排名
  • 做美食如何加入团购网站简单的seo
  • 健康网站模版引流推广是什么意思
  • 做网站常用的软件温州seo团队
  • ps做网站正规网站优化公司
  • 零陵旅游建设投资公司网站百度搜索关键词怎么刷上去
  • 番禺做网站的公司2022近期重大新闻事件10条
  • 先做它个天猫网站成都网站建设方案服务
  • 织梦视频网站源码网络推广计划方案
  • 电子商务网站建设的过程和步骤百度关键词搜索热度查询