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

网站为什么做站外推广有链接的网站

网站为什么做站外推广,有链接的网站,wordpress发外链,重庆互联网大厂设计模式学习(二)工厂模式——工厂方法模式 前言工厂方法模式简介示例优点缺点使用场景 前言 前一篇文章介绍了简单工厂模式,提到了简单工厂模式的缺点(违反开闭原则,扩展困难),本文要介绍的工…

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

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

前言

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

工厂方法模式

简介

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

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

示例

抽象相机类: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.hengruixuexiao.com/news/19485.html

相关文章:

  • 小荷特卖的网站谁做的瑞昌网络推广
  • 制作公司网页图片南通关键词优化平台
  • 国外做兼职的网站有哪些营销推广的形式包括
  • 定制网站建设和运营手机如何制作自己的网站
  • 东莞营销型网站建设找火速seo排名优化公司哪家好
  • 南海做网站百度贴吧人工客服电话
  • 企业网站特点分析与描述网站一键生成
  • 南宫企业做网站友情链接多少钱一个
  • 柳州企业 商家应该如何做网站邯郸网站建设优化
  • 网站每年都要续费吗天津百度整站优化服务
  • 自己家的电脑做网站需要备案没品牌营销策划方案
  • 做一个商务平台网站的费用百度官网下载
  • 网站源码文件安装教程最好的网络营销软件
  • 网站空间如何使用网站建设培训机构
  • 网站收录有什么好处百度 个人中心首页
  • 企业网站建设方案机构网站流量分析的指标有哪些
  • 交互式多媒体网站开发优化百度百科
  • 济南一哥网站建设公司网站优化排名优化
  • 上海华亮建设集团网站网站设计方案模板
  • 泊头做网站电话免费网站推广软件
  • 动态网站怎么做网站如何做推广
  • 做一下网站需要什么网站seo基础优化
  • solidworks永久免费版武汉百度推广seo
  • 上虞网站建设公司最近国内新闻
  • 触摸屏网站如何做搜一下百度
  • 2014做网站新网域名查询
  • 网站设计怎么做才好看seo一个月赚多少钱
  • cpa推广做网站指数分布的分布函数
  • 河南省造价信息网官网win10系统优化工具
  • 汽车交易网站系统建设百度在线客服人工服务