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.定义 简单工厂模式:是由一个工厂对象决定创建出哪一种产品类的实例.简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现. 工厂模式:定义一个用于创建对象的接口, ...
随机推荐
- 稳重商务风格教师求职简历免费word模板
30款稳重商务风格教师求职简历免费word模板,也可用于其他专业和职业,个人免费简历模板,个人简历表免费,个人简历表格. 声明:该简历模板仅用于个人欣赏使用,请勿用于商业用途,谢谢. 下载地址:百度网 ...
- nginx解析漏洞,配置不当,目录遍历漏洞环境搭建、漏洞复现
nginx解析漏洞,配置不当,目录遍历漏洞复现 1.Ubuntu14.04安装nginx-php5-fpm 安装了nginx,需要安装以下依赖 sudo apt-get install libpcre ...
- Java中的Union Types和Intersection Types
前言 Union Type和Intersection Type都是将多个类型结合起来的一个等价的"类型",它们并非是实际存在的类型. Union Type Union type(联 ...
- WebGL------osg框架学习二
今天我们继续来学习osg.js框架.上一篇我们介绍了DrawActor对象绘制操作类和Drawable可绘制对象类,我们大致知道了osg对Drawable可绘制对象的绘制流程管理.今天我们要继续介绍S ...
- 获取本地ip和获取公网ip
import socket def get_local_ip(): ''' 获取本地ip地址 :return: ''' s = socket.socket(socket.AF_INET, socket ...
- 微信小程序video视频组件
支持mp4和m3u8的视频格式,其中mp4的需要是h264的视频编码 .1.如果您使用video组件是mp4的但不能播放,大部分是由于编码的问题,当然排除文件不存在等这些客观的因素条件.2.如果使用m ...
- 如何防范和应对Redis勒索,腾讯云教你出招
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由腾讯云数据库 TencentDB发表于云+社区专栏 9月10日下午,又一起规模化利用Redis未授权访问漏洞攻击数据库的事件发生,此次 ...
- 跨域Ajax -- jsonp和cors
跨域Ajax - jsonp - cors 参考博客: http://www.cnblogs.com/wupeiqi/articles/5703697.html http://www.cnblogs. ...
- nohup命令详解
基础命令学习目录首页 原文链接:https://blog.csdn.net/hfismyangel/article/details/80258126 1.nohup 用途:不挂断地运行命令. 语法:n ...
- “私人助手”Beta版使用说明
私人助手(Beta)版使用说明 私人助手这款软件是通过添加事件提醒功能,让用户能在正确的时间做正确的事情,使得工作变得更有效率,而这款软件的特色在于提醒模式的添加,用户可以通过震动.铃声提醒,我们的特 ...