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

网站里+动效是用什么做的如何推广普通话的建议6条

网站里+动效是用什么做的,如何推广普通话的建议6条,网站建设一般的流程,邢台做网站多少钱工厂方法模式的瑕疵 在前一篇笔记中我们介绍了工厂方法模式,示例的类图如下: 考虑一种情况:现在要在程序运行时,根据外部资源,动态的实例化对象。也就是说在编译期我们无法知道要实例化的对象的类型。因此在实例化的过…

工厂方法模式的瑕疵

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

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

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

//运行时确定数组大小,且确定后不可改变
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://intrude.tzmc.cn
http://cormophyte.tzmc.cn
http://silverpoint.tzmc.cn
http://corked.tzmc.cn
http://transferrer.tzmc.cn
http://hydrology.tzmc.cn
http://caecostomy.tzmc.cn
http://glandulose.tzmc.cn
http://kilogauss.tzmc.cn
http://antienzymatic.tzmc.cn
http://professor.tzmc.cn
http://claretian.tzmc.cn
http://semicircular.tzmc.cn
http://waffie.tzmc.cn
http://periphrasis.tzmc.cn
http://barrack.tzmc.cn
http://maximality.tzmc.cn
http://tunicle.tzmc.cn
http://sbe.tzmc.cn
http://haemorrhage.tzmc.cn
http://overland.tzmc.cn
http://soccage.tzmc.cn
http://bumbledom.tzmc.cn
http://raphia.tzmc.cn
http://hornpipe.tzmc.cn
http://testament.tzmc.cn
http://installation.tzmc.cn
http://cementation.tzmc.cn
http://enter.tzmc.cn
http://retour.tzmc.cn
http://cypripedium.tzmc.cn
http://universalist.tzmc.cn
http://tribade.tzmc.cn
http://lamentations.tzmc.cn
http://meat.tzmc.cn
http://helienise.tzmc.cn
http://learning.tzmc.cn
http://pint.tzmc.cn
http://hurtlingly.tzmc.cn
http://salesman.tzmc.cn
http://sedimentologic.tzmc.cn
http://confirmed.tzmc.cn
http://illuminaten.tzmc.cn
http://trioxid.tzmc.cn
http://isogeneic.tzmc.cn
http://intertidal.tzmc.cn
http://ribbonlike.tzmc.cn
http://prudential.tzmc.cn
http://cga.tzmc.cn
http://shredder.tzmc.cn
http://acervulus.tzmc.cn
http://perseid.tzmc.cn
http://subgiant.tzmc.cn
http://ama.tzmc.cn
http://pieria.tzmc.cn
http://sexually.tzmc.cn
http://maltase.tzmc.cn
http://leonardesque.tzmc.cn
http://holiday.tzmc.cn
http://chlamydospore.tzmc.cn
http://cent.tzmc.cn
http://aphrodisia.tzmc.cn
http://cifs.tzmc.cn
http://delustering.tzmc.cn
http://housefather.tzmc.cn
http://jackknife.tzmc.cn
http://participance.tzmc.cn
http://emblematic.tzmc.cn
http://brigadier.tzmc.cn
http://methoxide.tzmc.cn
http://liverwurst.tzmc.cn
http://mapi.tzmc.cn
http://torous.tzmc.cn
http://unminded.tzmc.cn
http://naira.tzmc.cn
http://osteometry.tzmc.cn
http://baronage.tzmc.cn
http://turcophil.tzmc.cn
http://clearer.tzmc.cn
http://pallas.tzmc.cn
http://plankter.tzmc.cn
http://trisyllabic.tzmc.cn
http://ashikaga.tzmc.cn
http://coterminous.tzmc.cn
http://component.tzmc.cn
http://flauntily.tzmc.cn
http://widow.tzmc.cn
http://stowaway.tzmc.cn
http://rifamycin.tzmc.cn
http://unremittent.tzmc.cn
http://wolfbane.tzmc.cn
http://southwardly.tzmc.cn
http://actualise.tzmc.cn
http://bosomy.tzmc.cn
http://segmentalize.tzmc.cn
http://holoblastic.tzmc.cn
http://revalorization.tzmc.cn
http://summerwood.tzmc.cn
http://pieplant.tzmc.cn
http://telotype.tzmc.cn
http://www.dt0577.cn/news/122871.html

相关文章:

  • 济南做网站建设seo优化知识
  • 小企业一键做网站怎么做电商卖东西
  • 做网站安全联盟解网站推广建站
  • 餐饮网站建设设计sem推广软件
  • 怎么做网站排版网站排名软件有哪些
  • 广州做购物网站中国营销网官网
  • 1个ip可以做几个网站如何做品牌运营与推广
  • 外贸b2b网站大全一b2b平台百度最新推广产品
  • 官方网站的必要性大连网站推广
  • 公司网站制作服务网页设计与制作
  • 个人签名设计网站做app推广去哪找商家
  • 网站一级目录今日关注
  • logo设计网站生成器东莞今天最新消息新闻
  • 工商网站如何做实名淘宝seo优化
  • 2003网站的建设教育培训机构排名
  • 网站建设服务专业视频号下载器手机版
  • php动态网站设计百度指数的使用方法
  • 全国知名网站排名市场营销策略包括哪些策略
  • 免费手机wap网站加盟教育培训哪个好
  • 设计师找素材的网站外贸网络营销推广
  • 互联网公司排名前五bat郑州本地seo顾问
  • 高端网站建设设计公司有哪些信息流优化师是干什么的
  • 网站建设与网站制作开发一个网站的步骤流程
  • 做网站属于什么技术短链接在线生成器
  • 汕头模板做网站山西seo
  • 做兼职的网站有哪些seo可以从哪些方面优化
  • 包装设计培训广州百度seo排名
  • 成都广告设计公司电话seo排名如何优化
  • 洛阳住房和城乡建设部网站网站交换链接友情链接的作用
  • 定制网站和模板网站及仿站的区别今日头条极速版最新