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

带你深入浅出设计模式:五、简单工厂模式:构建软件的高效生产“流水线”

此为设计模式谈!

总-分-总的结构生活化的例子给你讲解设计模式!

码农不易,各位学者学到东西请点赞收藏支持支持!

开始部分:

简单工厂模式就是通过一个工厂类创建对象,减少了客户端的代码的复杂性和耦合性。(耦合性:就是类似于关系紧密度)

分:

1.老规则,在vs中创建一个控制台应用程序

2.实现编码,这里用一个汽车制作工厂来作为辅助例子

2.1 实现抽象汽车基类

2.2 实现汽车产品类,继承抽象汽车基类

2.3 实现工厂类,用来生产汽车产品

2.4 当客户需要什么产品,跟工厂说,就生成具体产品,而不用客户了解汽车是如何构造的(降低耦合性)

#include <iostream>
using namespace std;// 抽象汽车
class AbstractCar
{
public:virtual void ShowCarName() = 0;//纯虚函数
};// 具体产品的汽车继承
// 凯美瑞
class Camry :public AbstractCar
{virtual void ShowCarName(){cout << "Camry Car." << endl;}
};// 迈腾
class Magotan :public AbstractCar
{virtual void ShowCarName(){cout << "Magotan Car." << endl;}
};// 奥迪
class Audi :public AbstractCar
{virtual void ShowCarName(){cout << "Audi Car." << endl;}
};// 奔驰
class Benz :public AbstractCar
{virtual void ShowCarName(){cout << "Benz Car." << endl;}
};// 通过传递参数来确定需要生成那汽车
// 汽车工厂
class CarFactory
{
public:static AbstractCar* CreateCarFunc(string cname){if (cname == "Camry")// 具体生产细节......return new Camry;else if (cname == "Magotan")// 具体生产细节......return new Magotan;else if (cname == "Audi")// 具体生产细节......return new Audi;else if (cname == "Benz")// 具体生产细节......return new Benz;elsereturn nullptr;           }   
};int main()
{// 创建工厂CarFactory* fty = new CarFactory;// 创建汽车AbstractCar* car;// 指定工厂需要创建的汽车car = fty->CreateCarFunc("Benz");car->ShowCarName();delete car;car = fty->CreateCarFunc("Camry");car->ShowCarName();delete car;car = fty->CreateCarFunc("Audi");car->ShowCarName();delete car;car = fty->CreateCarFunc("Magotan");car->ShowCarName();delete car;return 0;
}

3.以下为简单工厂模式的结构图和三大模块,来辅助理解,主要为工厂、抽象产品基类、实际产品

总:在开发中,简单工厂模式主要解决接口选择问题。


http://www.mrgr.cn/news/42602.html

相关文章:

  • 排序算法——桶排序
  • 基于STM32的蓝牙音乐播放器设计
  • Spark SQL中怎么注册python以及使用python注册的UDF中数据流是怎么流转的
  • 最火的前10名AI论文生成软件推荐!亲测好用!
  • 向量数据库|第1期|从零开始学习
  • NVIDIA Ampere 架构
  • mysql的学习
  • ArkTS语法
  • JavaScript-上篇
  • jmeter学习(4)提取器
  • UE4 材质学习笔记02(数据类型/扭曲着色器)
  • 云原生化 - 基础镜像(简约版)
  • JavaWeb(一)
  • 加密与解密
  • Kafka为啥比RocketMQ快
  • FANUC机器人—PCDK
  • 《Linux从小白到高手》理论篇:深入理解Linux的计划任务/定时任务
  • Spiff,一个超牛的Python库
  • 【精】Java编程中的Lambda表达式与Stream API
  • NVIDIA 机密计算