C++ 设计模式之Static Factory模式(简单工厂模式)
简单工厂模式并不是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模式(简单工厂模式)相关推荐
- 设计模式-创建型模式-简单工厂模式
工程地址:设计模式-简单工厂源码-C++文档类资源-CSDN下载C++设计模式-创建型模式-简单工厂模式源码更多下载资源.学习资料请访问CSDN下载频道.https://download.csdn.n ...
- 创建型模式 简单工厂模式
创建型模式 简单工厂模式 /*** 创建型模式 简单工厂模式* 简单工厂模式属于类的创建型模式,又叫做静态工厂方法模式.通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类.** ...
- 设计模式学习笔记二:简单工厂模式
含义: 从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一.简单工厂模式是由一个工厂对象决定创 ...
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)
在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的.但是在一些情况下, new操作符直接生成对象会带来一些问题.举例来说, 许多类型对象的创造需要一 ...
- 工厂模式 java_JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)
在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的.但是在一些情况下, new操作符直接生成对象会带来一些问题.举例来说, 许多类型对象的创造需要一 ...
- java web简单工厂模式_JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)
在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的.但是在一些情况下, new操作符直接生成对象会带来一些问题.举例来说, 许多类型对象的创造需要一 ...
- 设计模式【2.1】-- 简单工厂模式怎么演变成工厂方法模式?
还记得前面的简单工厂模式么?我们开了一个水果工厂FruitFactory,生产三种水果Apple,Pear,Orange.今天给大家讲讲工厂方法模式: 老板搞水果工厂赚了点小钱,准备扩大生产,每个工厂 ...
- JAVA设计模式-创建模式-工厂模式-简单工厂模式/静态工厂模式
简单工厂模式Simple Factory 为什么要有设计模式? 简单工厂模式的类图 简单工厂模式的例子 产品 生产者 消费者 执行结果 后记 鸣谢 为什么要有设计模式? 一个有价值的系统总是会因为需求 ...
- C++设计模式 | 四种创建型模式——简单工厂模式、工厂方法模式、抽象工厂模式、单例模式...
简单工厂模式 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<string> using namespa ...
- 常用设计模式系列(一)—简单工厂模式
hello各位程序员大哥大姐好,上期我讲解了设计模式的概念及分类,学习了UML类图的认识,今天我们就趁热打铁,学习一下简单工厂模式,以后每一个模式会出一篇文章,供各位及我自己查阅学习.斗图还是不能忘的 ...
最新文章
- MonoRail学习笔记一:一个小例子
- 【matlab】我要自学网笔记总结 1.3
- hadoop数据流转过程分析
- Kotlin------函数和代码注释
- Centos 7 全网备份Rsync
- Python机器学习基础教程-第2章-监督学习之K近邻
- 深度学习中tensorflow框架的学习
- 三大趋势在移动互联网发展
- 2018蓝桥杯省赛---java---A---9(倍数问题)
- 我们正在破解JDBC,因此您不必
- WebAPi返回类型到底应该是什么才合适,这是个问题?
- 企业信息化解决方案——插件式平台开发框架
- 使用Kotlin的Android AsyncTask
- 同时读取两个文件进行while循环
- 关于 The SqlParameter is already contained by another SqlParameterCollection 报错的解决方案
- 带你了解锂电池保护板的工作原理
- python 小世界网络
- ps抠图插件Topaz ReMask 5
- 使用C++11实现二维坐标转换
- 唯美伤感个性日志推荐:有一种美因距离而产生
热门文章
- 状态机(FSM)的介绍--以检测序列1001为例
- Xcode打包踩过的那些坑
- JavaScript的闭包与应用
- 选择排序 介绍与java实现
- command shortcut paste
- 【文本分类】 特征抽取之信息增益
- IIS Express局域网访问配置
- tensorflow 显存 训练_tensorflow手动指定GPU以及显存大小
- linux在哪里储存变量值,关于linux:在bash中,如何在变量中存储返回值?
- python编写数据库连接工具_详解使用Python写一个向数据库填充数据的小工具(推荐)...