C++模式学习------工厂模式
工厂模式属于创建型模式,大致可以分为简单工厂模式、抽象工厂模式。
简单工厂模式,它的主要特点是需要在工厂类中做判断,从而创造相应的产品。
enum PTYPE
{
ProdA = ,
ProdB =
}; class ProductBase
{
public:
virtual void Show() = ;
}; //产品A
class ProductA: public ProductBase
{
public:
ProductA(){show();}
void Show() { cout<<"Product A"<<endl; }
}; //产品B
class ProductB: public ProductBase
{
public:
ProductB(){show();}
void Show() { cout<<"Product B"<<endl; }
}; //工厂
class Factory
{
public:
ProductBase* CreateProduct(enum PTYPE type)
{
if(type == ProdA)
return new ProductA(); //生产A
else if(type == ProdB)
return new ProductB(); //生产B
else
return nullptr;
}
};
抽象工厂模式: 为一组相关的产品定义实例化,提供一系列的接口而无需去定义一些工厂类
enum PTYPE
{
ProdA = ,
ProdB =
}; class ProductBase
{
public:
virtual void Show() = ;
}; //产品A
class ProductA: public ProductBase
{
public:
ProductA(){show();}
void Show() { cout<<"Product A"<<endl; }
}; //产品B
class ProductB: public ProductBase
{
public:
ProductB(){show();}
void Show() { cout<<"Product B"<<endl; }
}; class ProductBase_PLUS
{
public:
virtual void Show() = ;
}; //产品A-plus
class ProductA_PLUS: public ProductBase_PLUS
{
public:
ProductA_PLUS(){show();}
void Show() { cout<<"Product A-PLUS"<<endl; }
}; //产品B-plus
class ProductB_PLUS: public ProductBase_PLUS
{
public:
ProductB_PLUS(){show();}
void Show() { cout<<"Product B-PLUS"<<endl; }
}; class FactoryBase
{
public:
virtual ProductBase* CreateProduct() = ;
virtual ProductBase_PLUS* CreatePLUSProduct() = ;
}; //工厂A
class FactoryA : public FactoryBase
{
public:
ProductBase* CreateProduct()//生产A
{
return new ProductA();
} ProductBase_PLUS* CreatePLUSProduct()//生产A-plus
{
return new ProductA_PLUS();
}
}; //工厂B
class FactoryB : public FactoryBase
{
public:
ProductBase* CreateProduct()//生产B
{
return new ProductB();
} ProductBase_PLUS* CreatePLUSProduct()//生产B-plus
{
return new ProductB_PLUS();
}
};
C++模式学习------工厂模式的更多相关文章
- 基于go语言学习工厂模式
工厂模式 简单工厂模式(Simple Factory) 定义 优点 缺点 适用范围 代码实现 工厂方法模式(Factory Method) 定义 优点 缺点 适用范围 代码实现 抽象工厂模式(Abst ...
- 从BWM生产学习工厂模式
工厂模式应用非常之广,在JDK底层源码以及各大主流框架中随处可见,一般以Factory结尾命名的类,比如Mybatis中的SqlSessionFactory,Spring中的BeanFactory等, ...
- php基础设计模式 注册树模式、工厂模式、单列模式
废话不多说了,先给大家介绍注册树模式然后介绍工厂模式最后给大家介绍单列模式,本文写的很详细,一起来学习吧. php注册树模式 什么是注册树模式? 注册树模式当然也叫注册模式,注册器模式.之所以我在这里 ...
- javascript模式 (3)——工厂模式和装饰模式
上节我们讲解了单例模式,这节我们将继续讲解工厂模式和迭代器模式 工厂模式: 工厂模式的目的是为了方便的创建对象(可以在不知道构造的情况下),通过静态方法来实现,在java或c#等静态编译语言中需要通过 ...
- Java中的GOF23(23中设计模式)--------- 工厂模式(Factory)
Java中的GOF23(23中设计模式)--------- 工厂模式(Factory) 在给大家介绍工厂模式之前,我想和大家聊聊面向对象的那点事,在这里,引入三个概念. 开闭原则(Open Close ...
- Java设计模式之(工厂模式)--简单工厂模式--工厂方法模式--抽象工厂模式
工厂模式: 工厂模式可以分为三类: 1)简单工厂模式(Simple Factory) 2)工厂方法模式(Factory Method) 3)抽象工厂模式(Abstract Factory) 简单工厂模 ...
- Java中设计模式之工厂模式-4
一.工厂模式由来 1)还没有工厂时代:假如还没有工业革命,如果一个客户要一款宝马车,一般的做法是客户去创建一款宝马车,然后拿来用. 2)简单工厂模式:后来出现工业革命.用户不用去创建宝马车.因为客户有 ...
- JS 简单工厂模式,工厂模式(二)
一.什么是工厂模式: 工厂模式就是用来创建对象的一种最常用的设计模式,我们不暴露创建对象的具体逻辑,而是将逻辑封装到一个函数中,那么,这个函数 就可以被视为一个工厂.那么,在实际项目中,我们是不是可以 ...
- .Net简单工厂模式,工厂模式,抽象工厂模式实例
1.定义 简单工厂模式:是由一个工厂对象决定创建出哪一种产品类的实例.简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现. 工厂模式:定义一个用于创建对象的接口, ...
随机推荐
- 改革春风吹满地,安卓新系统Q上线腾讯WeTest
“刚要适配安卓派,Q就来了.” 3月14日谷歌推出了期待已久的Android Q的首个测试版本Android Q Beta 1 ,这是Android系统推出以来的第十个大版本. 安卓Q相比之前的版本, ...
- VBA_把相同行一列追加数据到一行
Sub Test() Dim rowsNum, i, j, equalRowsNum As Integer rowsNum = ActiveSheet.UsedRange.Rows.Count '获得 ...
- requests.get()解析
1.requests.get(url, params=None, headers=None, cookies=None, auth=None, timeout=None) Sends a GET re ...
- PSO算法的改进(参数)
## 基本PSO的改进 虽然粒子群在求解优化函数时,表现了较好的寻优能力:通过迭代寻优计算,能够迅速找到近似解:但基本的PSO容易陷入局部最优,导致结果误差较大. 两个方面:1.将各种先进理论引入到P ...
- telnet命令详解
基础命令学习目录 原文链接:https://www.cnblogs.com/PatrickLiu/p/8556762.html telnet命令用于登录远程主机,对远程主机进行管理.telnet因为采 ...
- 深入理解JavaScript函数参数
前面的话 javascript函数的参数与大多数其他语言的函数的参数有所不同.函数不介意传递进来多少个参数,也不在乎传进来的参数是什么数据类型,甚至可以不传参数. arguments javascri ...
- Python入门学习系列——Python文件和异常
从文件中读取数据 首先准备一个文本文件,文件中存储着普通文本数据.读取文件需要调用open()和read()函数. 读取整个文件 代码示例: with open('pi_digits.txt') as ...
- TFS任务预览
不太熟悉TFS任务项的建立. 初步建立及按老师要求分配到个人的任务设置与时间安排如下: (长时间任务可由多人合作完成,具体根据情况迅速调整任务分配) 加上每人需要进行阅读前一小组的代码需要时间2*8= ...
- Scrum Meeting 10.26
1.会议内容 姓名 今日任务 明日任务 预估时间(h) 徐越 学习服务器配置 配置SQLserver 4 卞忠昊 阅读代码 找上届代码的bug 3 武鑫 查阅资料 查阅资料,各种app的界面设计 3 ...
- 提不起劲想赶紧完工 Scrum Meeting 博客汇总
提不起劲想赶紧完工 Scrum Meeting 博客汇总 一.Alpha阶段 1,第一次Scrum Meeting 2,第二次Scrum Meeting 3,第三次Scrum Meeting 4,第四 ...