Factory模式具有两大重要的功能:

(1)、定义创建对象的接口,封装了对象的创建;

(2)、使具体化类工作延迟到了子类中。

//Product.h
#ifndef _PRODUCT_H_
#define _PRODUCT_H_ class Product
{
public:
virtual ~Product();
protected:
Product();
private: }; class ConcreteProduct:public Product
{
public:
ConcreteProduct();
~ConcreteProduct();
protected: private:
};
#endif //_PRODUCT_H_
//Product.cpp
#include "Product.h"
#include <iostream>
using namespace std; Product::Product()
{}
Product::~Product()
{}
ConcreteProduct::ConcreteProduct()
{}
ConcreteProduct::~ConcreteProduct()
{}
//Factory.h
#ifndef _FACTORY_H_
#define _FACTORY_H_ class Product;
class Factory
{
public:
virtual ~Factory();
virtual Product *CreateProduct() = ;
protected:
void Factory();
private:
}; class ConcreteFactory:public Factory
{
public:
ConcreteFactory();
~ConcreteFactory();
Product * CreateProduct();
protected:
private:
};
#endif //_FACTORY_H_
//Fatory.cpp

#include "Factory.h"
#include "Product.h" #include <iostream>
using namespace std; Factory::Factory()
{}
Factory::~Factory()
{} ConcreteFactory::ConcreteFactory()
{}
ConcreteFactory::ConcreteFactory()
{} Product ConcreteFactory::CreateProduct()
{
ConcreteProduct cproduct = new ConcreteProduct;
return product;
}
//main.cpp

#include "Factory.h"
#include "Product.h" #include <iostream>
using namespace std; int main(int argc,char *argv[])
{
Factory *fac = new ConcreteFactory;
Product *p = fac->CreateProduct(); return ;
}

设计模式之Factory模式(C++)的更多相关文章

  1. 设计模式 - Abstract Factory模式(abstract factory pattern) 详细说明

    Abstract Factory模式(abstract factory pattern) 详细说明 本文地址: http://blog.csdn.net/caroline_wendy/article/ ...

  2. c++设计模式系列----factory模式

    问题: 假设我们要开发一个游戏--打怪物,首先,游戏有分等级,假设有初级,中级两个个等级(就不用flappy bird模式了,那个比较特殊,对一个玩家来说是难以具有持久吸引力的!),不同的等级怪物也是 ...

  3. 设计模式之Factory模式 代码初见

    ObjectFactory就是通过Factory建造一个Object,比如说DBConnectionFactory就是专门建造DBConnection的工厂 BuilderFactory就是通过Fac ...

  4. 设计模式之工厂模式(Factory)

    设计模式的工厂模式一共有三种:简单工厂模式,工厂模式,抽象工厂模式 简单工厂模式原理:只有一个工厂类,通过传参的形式确定所创建的产品对象种类 代码如下: #include <stdio.h> ...

  5. Java设计模式之工厂模式(Factory模式)介绍(转载)

    原文见:http://www.jb51.net/article/62068.htm 这篇文章主要介绍了Java设计模式之工厂模式(Factory模式)介绍,本文讲解了为何使用工厂模式.工厂方法.抽象工 ...

  6. 设计模式---对象创建模式之抽象工厂模式(Abstract Factory)

    一:概念 抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的.抽象工厂模式可以向客户端提供一个接口,使得客户端在不必指定产品的具体类型的情况下,能够创建多个产品族的产品对象 二:动机 在软件系统 ...

  7. Java设计模式(1)工厂模式(Factory模式)

    工厂模式定义:提供创建对象的接口. 为何使用工厂模式 工厂模式是我们最常用的模式了,著名的Jive论坛,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见. 为什么工厂模式是如此常用?因 ...

  8. Golang设计模式—简单工厂模式(Simple Factory Pattern)

    Golang设计模式--简单工厂模式 背景 假设我们在做一款小型翻译软件,软件可以将德语.英语.日语都翻译成目标中文,并显示在前端. 思路 我们会有三个具体的语言翻译结构体,或许以后还有更多,但现在分 ...

  9. 设计模式-Builder和Factory模式区别

    Builder和Factory模式区别 Builder模式结构: Factory模式一进一出,Builder模式是分步流水线作业.当你需要做一系列有序的工作或者按照一定的逻辑来完成创建一个对象时 Bu ...

随机推荐

  1. CCF CSP 201604-1 折点计数

    题目链接:http://118.190.20.162/view.page?gpid=T42 问题描述 试题编号: 201604-1 试题名称: 折点计数 时间限制: 1.0s 内存限制: 256.0M ...

  2. 小程序如何封装自定义组件(Toast)

    1.创建和pages 同级的component目录新建一个myToast目录 例如: 2.myToast.wxml文件内容: <!-- 自定义toast组件 --> <!-- nam ...

  3. c#检测是否存在数据库(SQL SERVER)

    private static bool CheckDatabaseExists( string databaseName) { { string sqlCreateDBQuery; bool resu ...

  4. 劳德巴赫下载kernel和文件系统时问题

    用劳德巴赫下载 kernel  dtb rootfs BOOT.bin 报错(记了个大概) Bad CRC Ramdisk image is corrupt or invalid 记得之前有人和我说r ...

  5. 翻译 | Placing Search in Context The Concept Revisited

    翻译 | Placing Search in Context The Concept Revisited 原文 摘要 [1] Keyword-based search engines are in w ...

  6. Java序列化,解决字段为null与序列化后首字母变小写问题

    fastjson.jar package com.apt.utils; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.se ...

  7. tcp的三次握手,四次挥手

    为了更好的记住知识点,所以将最近学习的知识点记录下来: 最开始A和B都处于closed(关闭连接状态) 1.tcp的第一次握手:客户端A  向服务器端B 发送请求连接报文段(包含SYN=1,初始序号s ...

  8. linux设置静态IP及网卡选择

    linux中使用ifconfig命令查看网卡信息时显示为eth1,但是在network-scripts中只有ifcfg-eth0的配置文件,并且里面的NAME="eth0".   ...

  9. SpringAOP的xml实例、注解形式实例、概念理解 以及execution表达式实例与概念说明

    (1)Spring AOP的简单应用: -->AOP:(Aspect Orinted Programming)面向切面编程,用于具有横切逻辑的场合,如:访问控制,事务管理,性能检测,由切入点和增 ...

  10. React点击操作自动定位到另外一个元素

    使用Ref 方式一 使用ScrollIntoView方法 import React from 'react' export default class ScrollToElement extends ...