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

国外建站用什么最多企业网站源码去一品资源网

国外建站用什么最多,企业网站源码去一品资源网,扬州seo推广,深圳高端婚介公司设计模式学习(二)工厂模式——工厂方法模式 前言工厂方法模式简介示例优点缺点使用场景 前言 前一篇文章介绍了简单工厂模式,提到了简单工厂模式的缺点(违反开闭原则,扩展困难),本文要介绍的工…

设计模式学习(二)工厂模式——工厂方法模式

  • 前言
  • 工厂方法模式
    • 简介
    • 示例
    • 优点
    • 缺点
    • 使用场景

前言

前一篇文章介绍了简单工厂模式,提到了简单工厂模式的缺点(违反开闭原则,扩展困难),本文要介绍的工厂方法模式在一定程度上弥补了简单工厂模式的缺点。

工厂方法模式

简介

工厂方法模式是创建型设计模式之一,它在抽象工厂类中声明创建对象的接口,在具体工厂类中实现具体的实例化过程。这个模式的核心思想是将对象的实例化延迟到子类中进行,从而使得父类通过其子类来指定创建哪个对象,实现了类的实例化操作的封装和数据的封装。

这样的话,当要添加一个具体产品时,我们不会修改原有的工厂类(不违反开闭原则),而是新创建一个关联于具体产品的具体工厂类(易扩展)。

示例

抽象相机类:CameraDevice
具体相机类:BaslerCameraDevice,SickCameraDevice,HuarayCameraDevice

抽象工厂类:CameraDeviceFactory
具体工厂类:BaslerCameraFactory,SickCameraFactory,HuarayCameraFactory

UML类图如下:
在这里插入图片描述

代码如下:

// 抽象产品类
class CameraDevice
{
public:CameraDevice() = default;virtual ~CameraDevice() = 0;virtual bool Init(){};virtual bool OpenDevice() = 0;
};class BaslerCameraDevice : public CameraDevice
{
public:~BaslerCameraDevice() override;bool Init() override{};bool OpenDevice() override{};
};class HuarayCameraDevice : public CameraDevice
{
public:~HuarayCameraDevice() override{};bool Init() override{};bool OpenDevice() override{};
};class SickCameraDevice : public CameraDevice
{
public:~SickCameraDevice() override{};bool Init() override{};bool OpenDevice() override{};
};// 抽象工厂类
class CameraDeviceFactory 
{
public:virtual std::shared_ptr<CameraDevice> CreateCamera() = 0;
};// 具体工厂类
class BaslerCameraFactory : public CameraDeviceFactory 
{
public:std::shared_ptr<CameraDevice> CreateCamera() override {return std::make_shared<BaslerCameraDevice>();}
};class HuarayCameraFactory : public CameraDeviceFactory 
{
public:std::shared_ptr<CameraDevice> CreateCamera() override {return std::make_shared<HuarayCameraDevice>();}
};class SickCameraFactory : public CameraDeviceFactory 
{
public:std::shared_ptr<CameraDevice> CreateCamera() override {return std::make_shared<SickCameraDevice>();}
};int main() 
{std::shared_ptr<CameraDeviceFactory> factory = std::make_shared<BaslerCameraFactory>();std::shared_ptr<CameraDevice> camera = factory->CreateCamera();camera->Init();camera->OpenDevice();return 0;
}

优点

  • 解耦:工厂方法模式可以减少客户代码与具体类之间的耦合。客户端在使用的时候只需知道接口,而不是具体类。这样可以更容易地扩展或修改创建逻辑,而无需修改现有客户代码。
  • 符合开闭原则:工厂方法模式允许系统在不修改现有代码的情况下引入新的类型。满足对扩展开放,对修改封闭的原则。
  • 单一职责原则:工厂方法模式中,创建对象的逻辑被封装在一个工厂类中,这符合单一职责原则。这让代码更加清晰,维护也更简单。

缺点

  • 代码复杂:工厂方法模式为每种产品类型提供一个单独的工厂类。这意味着每增加一个新的产品类别,就需要增加一个新的具体工厂类。这会导致类的数量迅速增加,从而增加了代码的复杂性
  • 代码冗余:如果具体工厂类之间的创建逻辑相似,这可能会导致代码冗余。虽然每个工厂类只负责创建一个具体产品,但这些工厂类的创建逻辑可能高度相似,不能有效地重用代码。

使用场景

  • 产品类别经常变化:一个系统会频繁添加或修改产品的创建,而每种产品的创建又有不同的复杂配置和依赖时,工厂方法可以将具体产品的创建逻辑封装在各自的工厂类中,从而简化客户端代码。
http://www.yayakq.cn/news/454642/

相关文章:

  • 手机端网站开发工具淮北建筑大学
  • 高端平面网站天津外贸网站建设
  • 鲜花类网站建设策划书范文智能建站制作
  • 山东省住房和城乡建设挺网站百度给企业做网站吗
  • 如何进入邮箱的网站创建
  • 怎么把个人做的网站上传到网上谢岗镇仿做网站
  • 网站建设哪家服务好太原百度快照优化排名
  • 四网合一的网站百度指数平台官网
  • 做网站信息dede能建立手机网站吗
  • 广州网站整站优化万网域名查询注册商
  • 哈密网站建设常州网站备案
  • 大连做网站比较好的公司做外贸用什么平台
  • 为公司做的图可以上传网站吗佛山设计网站
  • 丁香园做科室网站做网站找哪个公司好
  • 四川电大住房和城乡建设厅网站成都好玩还是重庆好玩
  • 预约做家庭清洁的网站做网站的过程中有哪些问题
  • 企业网站关键词排名 s网页设计模板html代码百度云
  • 大型 网站 建设 公司什么是网络营销策略
  • 国家建设工程质量检查标准网站广州开发小程序
  • 建站公司 知乎 discuz注册网站需要多久
  • 加盟招商网站建设方案书公司企业安全文化内容范本
  • 网站没有被百度收录空间建网站
  • android 旅游网站开发产品造型设计
  • 怎么做网站前段建站工作室源码
  • 做100个网站效果图网站外网怎么做
  • 如何让别人看到自己做的网站10岁一12岁的创意手工
  • 中国建设银行网站招聘如何做电商 个人
  • iis虚拟网站东航集团客户网站是哪家公司建设
  • 织梦网站怎么更换模板免费做网站txt外链
  • 长子网站建设工程施工合同免费版