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

做影视会员网站网站建设前期目标

做影视会员网站,网站建设前期目标,网站策划与网上营销,简约个人博客html代码设计模式学习#xff08;二#xff09;工厂模式——抽象工厂模式注册表 前言使用简单工厂改进使用注册表改进参考文章 前言 在上一篇文章中我们提到了抽象工厂模式初版代码的一些缺点#xff1a;①客户端违反开闭原则②提供方违反开闭原则。本文将针对这两点进行讨论 使用… 设计模式学习二工厂模式——抽象工厂模式注册表 前言使用简单工厂改进使用注册表改进参考文章 前言 在上一篇文章中我们提到了抽象工厂模式初版代码的一些缺点①客户端违反开闭原则②提供方违反开闭原则。本文将针对这两点进行讨论 使用简单工厂改进 对于缺点①我们可以使用简单工厂的思路来改进抽象工厂的初版代码。对于上一篇文章中的例子我们去除CameraFactory、BaslerCameraFactory和SickCameraFactory取而代之的是SimpleFactory类。 类图如下 代码如下 //工厂类 class SimpleFactory { public:BaslerCamera* CreateBaslerCamera(){if (Linux os_name_){return new LinuxBaslerCamera();}else if (Windows os_name_){return new WindowsBaslerCamera();}else{return nullptr;}}SickCamera* CreateSickCamera(){if (Linux os_name_){return new LinuxSickCamera();}else if (Windows os_name_){return new WindowsSickCamera();}else{return nullptr;}} public:std::string os_name_ Linux;};//客户端 int main() {SimpleFactory* camera_factory new SimpleFactory();BaslerCamera* basler_camera camera_factory-CreateBaslerCamera();basler_camera-OpenCamera();SickCamera* sick_camera camera_factory-CreateSickCamera();sick_camera-OpenCamera();return 0; }注意上述方法虽然改进了缺点①但是缺点②仍存在。 使用注册表改进 对于缺点②其本质是增加新产品时对工厂类带来的修改违反了开闭原则。对于这种情况我们可以参考《设计模式学习二工厂模式——工厂方法模式注册表》中提到的注册表来去除switch或if这种分支判断解除分支判断带来的耦合。 对于具体产品我们可以这样将它注册 class LinuxBaslerCamera : public BaslerCamera { public:~LinuxBaslerCamera() override default;bool OpenCamera() override{return true;} };ReflectRegister(LinuxBasler, LinuxBaslerCamera);然后工厂类的代码可以简化为 class SimpleFactory { public:BaslerCamera* CreateBaslerCamera(){std::string name os_name_ Basler;return Object::CreateObjectBaslerCamera(name);}SickCamera* CreateSickCamera(){std::string name os_name_ Sick;return Object::CreateObjectSickCamera(name);} public:std::string os_name_ Linux; };这样在产品族增加时比如增加一个HarmonyOS我们只需要在它下面的产品类对应的文件中使用ReflectRegister注册然后改变os_name_即可当然os_name_也可以在运行时从配置文件中加载这样更好。 而对于现有的产品族内增加新产品比如增加一个Huaray相机工厂类中还是要增加一个CreateHuarayCamera函数。 参考文章 1.《大话设计模式》
http://www.hkea.cn/news/14262536/

相关文章:

  • 着力加强网站内容建设浙江广发建设有限公司网站
  • 莆田网站建站做旅游网站的要求
  • 模板建站广团作词做曲网站
  • 运用虚拟机建设网站附近做广告的电话
  • saas建站系统是怎么实现的wordpress 管理员权限设置密码
  • 简单的html网站模板下载个人无网站怎样做cps广告
  • 迅腾网络网站建设有限公司一流的五屏网站建设
  • 怎么在手机上建网站制作网页前端
  • 网站建设目标的文字微信小程序网站建设公司
  • 深圳福田大型商城网站建设网站建设开户行查询
  • 网站的后台登录注册怎么做青岛城乡建设部网站首页
  • 定制网站和模板建站哪个更好虚拟服务器建网站
  • 视频播放网站开发北京网站被处罚
  • 工具类网站做排名做软件常用的网站
  • 备案 网站服务内容坪山医院网站建设
  • 南京网站开发南京乐识强商洛市城乡建设规划局网站
  • 邹城网站建设公司怎样免费推广网站
  • 四川省城乡住房和城乡建设厅网站做网站设计的电话
  • 网站不备案可以登录吗网站建设理论
  • 网站开发的话术海淀区网站建设公司
  • 高校网站建设评比标准模板建站可以做优化吗
  • dw做网站的实用特效phpnow 搭建本地网站
  • 网站建设公司中企动力wordpress怎么看代码
  • 住房和城乡建设部网站施工员张家口网站建设开发
  • 风铃上做的网站发布时号码填写安徽合肥做网站的公司有哪些
  • 苏州网站建设制作网络公司公司门户最新版下载
  • 曲沃网站开发seo网站优化策划案
  • 东莞建站多少钱wordpress delete_option
  • 网页设计与网站建设在线考试石油大学东莞市做网站的公司哪家好
  • 深圳做企业网站哪家好番禺怎样优化网站建设