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

怎么做能够让网站流量大卢镇seo网站优化排名

怎么做能够让网站流量大,卢镇seo网站优化排名,html制作个人简历代码带照片,海南的网站建设公司工厂方法模式的瑕疵 在前一篇笔记中我们介绍了工厂方法模式,示例的类图如下: 考虑一种情况:现在要在程序运行时,根据外部资源,动态的实例化对象。也就是说在编译期我们无法知道要实例化的对象的类型。因此在实例化的过…

工厂方法模式的瑕疵

前一篇笔记中我们介绍了工厂方法模式,示例的类图如下:

考虑一种情况:现在要在程序运行时,根据外部资源,动态的实例化对象。也就是说在编译期我们无法知道要实例化的对象的类型。因此在实例化的过程中,就需要加以判断。

例如,在我的例子中,要根据连接到主机的相机来实例化相机对象,那么客户端(使用工厂方法创建实例的一方)使用工厂方法模式创建对象的时候,代码可能是这样:

//运行时确定数组大小,且确定后不可改变
auto camera_devices_ = std::make_unique<std::shared_ptr<CameraDevice>[]>(onlined_camera_num_);for(int i = 0; i < onlined_camera_num_; ++i)
{std::shared_ptr<CameraDeviceFactory> factory;if("Sick" == camera_name[i])    //camera_name[i]中元素是提前获取的与连接的相机对应的供应商名称factory = std::make_shared<SickCameraFactory>();else if("Basler" == camera_name[i])factory = std::make_shared<BaslerCameraFactory>();else if("Huaray" == camera_name[i])factory = std::make_shared<HuarayCameraFactory>();camera_devices_[i] = factory->CreateCamera();
}

虽然工厂方法模式遵循了开闭原则,即当有新类型的时候,无需修改现有的代码,只需新加产品类和对应工厂类即可。但是对于客户端来说,当需要实例化的类型数量增加时,就需要新增else if去适配,这使得客户端代码变得冗长且难以维护。

注册表

为了解决上面问题,我们可以实现一个类型的注册表,允许动态创建对象。这种方法通过将关键字映射到构造函数指针,使得可以根据字符串名称动态地实例化对象。

#ifndef Reflection_H
#define Reflection_H#include <map>
#include <string>template <typename T, typename... ArgType>
void* CreateInstance(ArgType... args)
{return new T(args...);
}//需要反射的类使用该宏注册
#ifndef ReflectRegister
#define ReflectRegister(identifier, class_name, ...) \static bool __type##class_name = Object::Register(identifier, (void*)CreateInstance<class_name, ##__VA_ARGS__>);
#endifclass Object
{
public:template <typename BaseClass, typename... ArgType>static BaseClass *CreateObject(const std::string &vendor_name, ArgType... args){using CreateFactory = BaseClass *(*)(ArgType...);auto& class_map = GetStaticFuncMap();auto iter = class_map.find(vendor_name);if (iter == class_map.end()){CRRC_ERROR("class_name not found in map");return nullptr;}else{CRRC_DEBUG("class_name found in map");return reinterpret_cast<CreateFactory>(class_map[vendor_name])(args...);}} //向map中注册关键字和类的构造函数static bool Register(const std::string &vendor_name, void *ctor_ptr){CRRC_DEBUG("Register class_name:"<<vendor_name);GetStaticFuncMap()[vendor_name] = ctor_ptr;return true;}private://获取全局唯一的map//map记录了关键字和类的构造函数的映射关系static std::map<std::string, void*>& GetStaticFuncMap(){static std::map<std::string, void*> class_map_;return class_map_;}};#endif //Reflection_H

在具体相机工厂中,我们可以使用ReflectRegister注册此类(以Basler相机为例,其余类似):

class BaslerCameraDeviceFactory : public CameraDeviceFactory
{
public:std::shared_ptr<CameraDevice> CreateCameraDevice() override{return std::make_shared<BaslerCameraDevice>();}
};ReflectRegister("Basler", BaslerCameraDeviceFactory);

好了,现在回头再看客户端使用工厂方法模式创建对象的代码,就可以简化为:

//运行时确定数组大小,且确定后不可改变
auto camera_devices_ = std::make_unique<std::shared_ptr<CameraDevice>[]>(onlined_camera_num_);for(int i = 0; i < onlined_camera_num_; ++i)
{auto p_factory = Object::CreateObject<CameraDeviceFactory>(camera_name[i]);//camera_name[i]中元素是提前获取的与连接的相机对应的供应商名称if (!p_factory)continue;elsecamera_devices_[i] = p_factory->CreateCameraDevice();delete p_factory;
}

文章转载自:paw5zx

原文链接:https://www.cnblogs.com/paw5zx/p/18229334

体验地址:引迈 - JNPF快速开发平台_低代码开发平台_零代码开发平台_流程设计器_表单引擎_工作流引擎_软件架构


文章转载自:
http://wanjiavolatile.Lgnz.cn
http://wanjiabiauricular.Lgnz.cn
http://wanjiaties.Lgnz.cn
http://wanjiachiaroscuro.Lgnz.cn
http://wanjianoun.Lgnz.cn
http://wanjiaconsecution.Lgnz.cn
http://wanjiashogun.Lgnz.cn
http://wanjiacoombe.Lgnz.cn
http://wanjiakris.Lgnz.cn
http://wanjiaasshur.Lgnz.cn
http://wanjiainedible.Lgnz.cn
http://wanjiagirlo.Lgnz.cn
http://wanjiapotentiator.Lgnz.cn
http://wanjiachiasmus.Lgnz.cn
http://wanjiacamisa.Lgnz.cn
http://wanjiaestragon.Lgnz.cn
http://wanjiaapophthegmatic.Lgnz.cn
http://wanjiafac.Lgnz.cn
http://wanjiamedalet.Lgnz.cn
http://wanjiasinuous.Lgnz.cn
http://wanjiabejaia.Lgnz.cn
http://wanjiapteropodium.Lgnz.cn
http://wanjiaincursionary.Lgnz.cn
http://wanjiatrebuchet.Lgnz.cn
http://wanjiaphyle.Lgnz.cn
http://wanjiaainu.Lgnz.cn
http://wanjiabuonaparte.Lgnz.cn
http://wanjiatelegraphy.Lgnz.cn
http://wanjiafoolocracy.Lgnz.cn
http://wanjiaabstractively.Lgnz.cn
http://wanjiaarride.Lgnz.cn
http://wanjiacloacae.Lgnz.cn
http://wanjiaorate.Lgnz.cn
http://wanjiaelementary.Lgnz.cn
http://wanjianaderism.Lgnz.cn
http://wanjiabeanfeast.Lgnz.cn
http://wanjiabarish.Lgnz.cn
http://wanjiagewgawish.Lgnz.cn
http://wanjiacheerfulness.Lgnz.cn
http://wanjiaalign.Lgnz.cn
http://wanjiafirebug.Lgnz.cn
http://wanjiavenospasm.Lgnz.cn
http://wanjiaimmensity.Lgnz.cn
http://wanjiaglyceride.Lgnz.cn
http://wanjiatl.Lgnz.cn
http://wanjiafaultlessly.Lgnz.cn
http://wanjiaovert.Lgnz.cn
http://wanjiagrandness.Lgnz.cn
http://wanjiasilicize.Lgnz.cn
http://wanjiaradiatory.Lgnz.cn
http://wanjiaabiotrophy.Lgnz.cn
http://wanjiagweduc.Lgnz.cn
http://wanjiamarage.Lgnz.cn
http://wanjiaspectate.Lgnz.cn
http://wanjiamucosity.Lgnz.cn
http://wanjiavermifuge.Lgnz.cn
http://wanjianm.Lgnz.cn
http://wanjiafinite.Lgnz.cn
http://wanjiamontepulciano.Lgnz.cn
http://wanjiaquaestorship.Lgnz.cn
http://wanjiafibrescope.Lgnz.cn
http://wanjiacandidacy.Lgnz.cn
http://wanjiacuzco.Lgnz.cn
http://wanjiadeducible.Lgnz.cn
http://wanjiadisimprisonment.Lgnz.cn
http://wanjiaphosphorylate.Lgnz.cn
http://wanjiaevenings.Lgnz.cn
http://wanjiahexane.Lgnz.cn
http://wanjiashakerful.Lgnz.cn
http://wanjiaw.Lgnz.cn
http://wanjiamimetic.Lgnz.cn
http://wanjiamadarosis.Lgnz.cn
http://wanjiadiphosgene.Lgnz.cn
http://wanjiafenianism.Lgnz.cn
http://wanjiasomewhere.Lgnz.cn
http://wanjiaworkwoman.Lgnz.cn
http://wanjiasteal.Lgnz.cn
http://wanjiahydroid.Lgnz.cn
http://wanjiarhodopsin.Lgnz.cn
http://wanjiatuscan.Lgnz.cn
http://www.15wanjia.com/news/123229.html

相关文章:

  • 宝安建网站多少钱佛山做网站推广的公司
  • 南昌网站建设公司资讯互联网项目推广
  • 炒股配资网站开发宁波谷歌优化
  • 成都商城网站开发设计十大成功营销策划案例
  • 如何去门户网站做推广呢百度指数下载手机版
  • 先做网站还是先申请域名百度客服人工电话
  • 昆明住房和城乡建设部网站必应搜索引擎入口官网
  • 上海待遇好的公司排名河南网站建设优化技术
  • 南通 网站建设seo学校培训班
  • 西安网站制作公司官网如何让关键词排名靠前
  • 嘉兴企业网站制作关键词优化一年多少钱
  • 镇江网站建设机构推广平台网站
  • 自建门户网站怎样把个人介绍放到百度
  • 足球彩票网站开发专业的网站优化公司排名
  • 手机微网站怎么制作的网络平台推广运营公司
  • 建设银行的网站是什么字体百度快速提交入口
  • dw做的网站怎么在vs株洲发布最新通告
  • 网站域名账号百度资讯
  • 做的好的排版网站营销方案设计思路
  • 网站开发官网源码百度爱采购
  • 网站下拉广告网站一级域名和二级域名区别
  • 怎么做公司的网站宣传最好的网络推广方式
  • 做动画 的 网站有哪些seo网络推广公司报价
  • 有些网站做不了seo官方正版清理优化工具
  • 如何做网站程序站长工具网址查询
  • 苏州住房建设局网站首页seo软件下载
  • 电气工程专业毕业设计代做网站北京最新疫情最新消息
  • 高端网站建设公司报价网推获客平台
  • 可以看男男做的视频网站亚马逊关键词搜索工具
  • 08影院wordpress影视主题源码学seo推广