简单工厂模式并不是GOF提出的23种设计模式中的一种。工厂模式有一种非常形象的描述,建立对象的类就如一个工厂,而需要被建立的对象就是一个个产品。

适用场合
1.在程序中,需要创建的对象很多,导致对象的new操作多且杂时,需要使用简单工厂模式;
2.由于对象的创建过程是我们不需要去关心的,而我们注重的是对象的实际操作,所以,我们需要分离对象的创建和操作两部分,如此,方便后期的程序扩展和维护。

1.定义抽象类,也就是接口

class Product
{
public:virtual void show()=0;
};

2.定义需要具体实现类,继承抽象类,假设有三个产品

class ProductA:public Product
{
public:virtual void show(){printf("ProductA\n");}
};class ProductB:public Product
{
public:virtual void show(){printf("ProductB\n");}
};class ProductC:public Product
{
public:virtual void show(){printf("ProductC\n");}
};

3.定义工厂类,负责生产产品,这里传入具体的参数来决定生产那个产品

class Factory
{
public:Product* CreateProduct(int num){switch(num)   //通过传参实例化对象{case 1:return new ProductA();break;case 2:return new ProductB();break;case 3:return new ProductC();break;default:return NULL;break;}}
};

4.实际调用

int main()
{Factory* ProductFactory=new Factory();       //首先定有一个工厂对象Product* A=ProductFactory->CreateProduct(1); //利用多态与工厂对象来传参决定生产那个产品A->show();Product* B=ProductFactory->CreateProduct(2);B->show();Product* C=ProductFactory->CreateProduct(3);C->show();
}

C++ 设计模式之Static Factory模式(简单工厂模式)相关推荐

  1. 设计模式-创建型模式-简单工厂模式

    工程地址:设计模式-简单工厂源码-C++文档类资源-CSDN下载C++设计模式-创建型模式-简单工厂模式源码更多下载资源.学习资料请访问CSDN下载频道.https://download.csdn.n ...

  2. 创建型模式 简单工厂模式

    创建型模式 简单工厂模式 /*** 创建型模式 简单工厂模式* 简单工厂模式属于类的创建型模式,又叫做静态工厂方法模式.通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类.** ...

  3. 设计模式学习笔记二:简单工厂模式

    含义: 从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一.简单工厂模式是由一个工厂对象决定创 ...

  4. JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)

    在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的.但是在一些情况下, new操作符直接生成对象会带来一些问题.举例来说, 许多类型对象的创造需要一 ...

  5. 工厂模式 java_JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)

    在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的.但是在一些情况下, new操作符直接生成对象会带来一些问题.举例来说, 许多类型对象的创造需要一 ...

  6. java web简单工厂模式_JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)

    在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的.但是在一些情况下, new操作符直接生成对象会带来一些问题.举例来说, 许多类型对象的创造需要一 ...

  7. 设计模式【2.1】-- 简单工厂模式怎么演变成工厂方法模式?

    还记得前面的简单工厂模式么?我们开了一个水果工厂FruitFactory,生产三种水果Apple,Pear,Orange.今天给大家讲讲工厂方法模式: 老板搞水果工厂赚了点小钱,准备扩大生产,每个工厂 ...

  8. JAVA设计模式-创建模式-工厂模式-简单工厂模式/静态工厂模式

    简单工厂模式Simple Factory 为什么要有设计模式? 简单工厂模式的类图 简单工厂模式的例子 产品 生产者 消费者 执行结果 后记 鸣谢 为什么要有设计模式? 一个有价值的系统总是会因为需求 ...

  9. C++设计模式 | 四种创建型模式——简单工厂模式、工厂方法模式、抽象工厂模式、单例模式...

    简单工厂模式 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<string> using namespa ...

  10. 常用设计模式系列(一)—简单工厂模式

    hello各位程序员大哥大姐好,上期我讲解了设计模式的概念及分类,学习了UML类图的认识,今天我们就趁热打铁,学习一下简单工厂模式,以后每一个模式会出一篇文章,供各位及我自己查阅学习.斗图还是不能忘的 ...

最新文章

  1. MonoRail学习笔记一:一个小例子
  2. 【matlab】我要自学网笔记总结 1.3
  3. hadoop数据流转过程分析
  4. Kotlin------函数和代码注释
  5. Centos 7 全网备份Rsync
  6. Python机器学习基础教程-第2章-监督学习之K近邻
  7. 深度学习中tensorflow框架的学习
  8. 三大趋势在移动互联网发展
  9. 2018蓝桥杯省赛---java---A---9(倍数问题)
  10. 我们正在破解JDBC,因此您不必
  11. WebAPi返回类型到底应该是什么才合适,这是个问题?
  12. 企业信息化解决方案——插件式平台开发框架
  13. 使用Kotlin的Android AsyncTask
  14. 同时读取两个文件进行while循环
  15. 关于 The SqlParameter is already contained by another SqlParameterCollection 报错的解决方案
  16. 带你了解锂电池保护板的工作原理
  17. python 小世界网络
  18. ps抠图插件Topaz ReMask 5
  19. 使用C++11实现二维坐标转换
  20. 唯美伤感个性日志推荐:有一种美因距离而产生

热门文章

  1. 状态机(FSM)的介绍--以检测序列1001为例
  2. Xcode打包踩过的那些坑
  3. JavaScript的闭包与应用
  4. 选择排序 介绍与java实现
  5. command shortcut paste
  6. 【文本分类】 特征抽取之信息增益
  7. IIS Express局域网访问配置
  8. tensorflow 显存 训练_tensorflow手动指定GPU以及显存大小
  9. linux在哪里储存变量值,关于linux:在bash中,如何在变量中存储返回值?
  10. python编写数据库连接工具_详解使用Python写一个向数据库填充数据的小工具(推荐)...