C++设计模式之工厂模式
//产品父类声明
#pragma once
#include "iostream"
using namespace std;
class Product
{
public:
virtual void PrintfName();
Product(void);
~Product(void);
};
//产品A类
#pragma once
#include "product.h"
class ProductA :
public Product
{
public:
virtual void PrintfName();
ProductA(void);
~ProductA(void);
}; #include "ProductA.h" ProductA::ProductA(void)
{
} ProductA::~ProductA(void)
{
}
void ProductA::PrintfName()
{ cout<<"This is ProductA"<<endl;
}
//产品B类
#pragma once
#include "Product.h"
class ProductB :
public Product
{
public:
virtual void PrintfName();
ProductB(void);
~ProductB(void);
}; #include "ProductB.h" ProductB::ProductB(void)
{
}
ProductB::~ProductB(void)
{
}
void ProductB::PrintfName()
{
cout<<"This is ProductB"<<endl; }
//创建父类声明
#pragma once
#include "Product.h"
class Creator
{
public:
virtual Product* GetProduct()=;
Creator(void);
~Creator(void);
};
////产品A的创建
#pragma once
#include "ProductA.h"
#include "creator.h"
class CreatorA:
public Creator
{
public:
virtual ProductA* GetProduct();
CreatorA(void);
~CreatorA(void);
}; #include "CreatorA.h" CreatorA::CreatorA(void)
{
} ProductA* CreatorA::GetProduct()
{
return (new ProductA()); }
CreatorA::~CreatorA(void)
{
}
//产品B的创建
#pragma once
#include "creator.h"
#include "ProductB.h"
class CreatorB :
public Creator
{
public:
virtual ProductB* GetProduct();
CreatorB(void);
~CreatorB(void);
}; #include "CreatorB.h" CreatorB::CreatorB(void)
{
} CreatorB::~CreatorB(void)
{
}
ProductB *CreatorB::GetProduct()
{ return (new ProductB());
}
// Factory.cpp : 定义控制台应用程序的入口点。
//工厂模式调用 #include "stdafx.h"
#include "Creator.h"
#include "CreatorA.h"
#include "CreatorB.h"
#include "ProductA.h"
#include "ProductB.h"
int _tmain(int argc, _TCHAR* argv[])
{
Creator* ca=new CreatorA();
Creator* cb=new CreatorB();
Product* pa=ca->GetProduct();
Product* pb=cb->GetProduct();
pa->PrintfName();
pb->PrintfName();
getchar();
delete ca;
delete cb;
delete pa;
delete pb;
return ;
}
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJoAAAAuCAIAAABfxpcjAAACBElEQVR4nO2ZW3KDMAxF2W531W20edRdQp6LABbRD810GCzJRrInQXPP6IMQfJF1aD7K8HUZ/+sT7JxhpfMD7BlG5wD2C3SGAjpDAZ2hyHWmDLpy9TFH/7YeZ47Uvz/QmaOEN4tjdS5vs7zZLnSuEhoadSZIsS2NSj+27D36PaRteTedxWE2G6xN5+pb6Snb+vS1zWF7NvfPjr4mJ2UUc+wYdLITkfZmaNefw45vqFDb41hq2zwfDfOPbVGnuUt/jnQ9a7GTwmI/KaN+gyJddernJfw5mxJeq7O4dhv9dJrb9ee8XKe0hcrr7bA604JVT0o3+So2R6FJjnSxElJcIu1XmYN0i9WZ/NgF/isUCugMBXSGAjpDAZ2hgM5QQGco8L6zPtCZI8W2zP++jFR439m7JT22zfRynUp6j4e0B++mU1reQed1pML7Tv2+7NxrclKG3qcLg052ItLeDL36c4rjkzbS41hpW+rTju2vk72g5kwN/pzi+IZMbb7QqbC+n+LyDXTVaWvUn7MpIZTOw3WkwvvOTsfLj61GJHK4TlR436kskfarzEG6RXGzLlidYK8cbhMVdEbgeJuO0BkG0nmEzhhAZyhOt4kKOiNwuk9U0BkB6AzF+T5RQWcEzveZCjojcH7MVNAZgZ/HTAWdEUiPmQo6I5CeMxV0RuD3OVNBZwD+AH+je5Y0sZi6AAAAAElFTkSuQmCC" alt="" />
C++设计模式之工厂模式的更多相关文章
- 设计模式——抽象工厂模式及java实现
设计模式--抽象工厂模式及java实现 设计模式在大型软件工程中很重要,软件工程中采用了优秀的设计模式有利于代码维护,方便日后更改和添加功能. 设计模式有很多,而且也随着时间在不断增多,其中最著名的是 ...
- 5. 星际争霸之php设计模式--抽象工厂模式
题记==============================================================================本php设计模式专辑来源于博客(jymo ...
- 3. 星际争霸之php设计模式--简单工厂模式
题记==============================================================================本php设计模式专辑来源于博客(jymo ...
- iOS 设计模式之工厂模式
iOS 设计模式之工厂模式 分类: 设计模式2014-02-10 18:05 11020人阅读 评论(2) 收藏 举报 ios设计模式 工厂模式我的理解是:他就是为了创建对象的 创建对象的时候,我们一 ...
- 设计模式之工厂模式(Factory)
设计模式的工厂模式一共有三种:简单工厂模式,工厂模式,抽象工厂模式 简单工厂模式原理:只有一个工厂类,通过传参的形式确定所创建的产品对象种类 代码如下: #include <stdio.h> ...
- php设计模式:工厂模式
php设计模式:工厂模式 意图: 定义一个用于创建对象的接口,让子类决定实例化哪一个类. 工厂模式实现: 工厂模式中任何创建对象的工厂类都要实现这个接口,实现接口的方法体中都要实现接口中的方法,它声明 ...
- 浅析JAVA设计模式之工厂模式(一)
1 工厂模式简单介绍 工厂模式的定义:简单地说,用来实例化对象,取代new操作. 工厂模式专门负责将大量有共同接口的类实例化.工作模式能够动态决定将哪一个类实例化.不用先知道每次要实例化哪一个类. 工 ...
- java 设计模式之工厂模式与反射的结合
工厂模式: /** * @author Rollen-Holt 设计模式之 工厂模式 */ interface fruit{ public abstract void eat(); } ...
- C#学习之设计模式:工厂模式
最近研究一下设计模式中工厂模式的应用,在此记录如下: 什么是工厂模式? 工厂模式属于设计模式中的创造型设计模式的一种.它的主要作用是协助我们创建对象,为创建对象提供最佳的方式.减少代码中的耦合程度,方 ...
- [JS设计模式]:工厂模式(3)
简单工厂模式是由一个方法来决定到底要创建哪个类的实例, 而这些实例经常都拥有相同的接口. 这种模式主要用在所实例化的类型在编译期并不能确定, 而是在执行期决定的情况. 说的通俗点,就像公司茶水间的饮料 ...
随机推荐
- 【MVC】过滤器
APS.NET MVC中(以下简称“MVC”)的每一个请求,都会分配给相应的控制器和对应的行为方法去处理,而在这些处理的前前后后如果想再加一些额外的逻辑处理.这时候就用到了过滤器. MVC支持的过滤器 ...
- jQuery 随滚动条滚动效果 (适用于内容页长文章)
直接入题! 当内容页比较长的时候,网站右侧一直是空白,不如放点有用的东西给用户看,最好不要放广告,因为那样很邪恶,你懂的. 好吧,昨天写了这个东西,jQuery滚动随动区块,代码如下: //侧栏随动 ...
- Scrapy入门程序点评
1,引言 在<Scrapy的架构初探>一文,我基于爬虫开发的经验对Scrapy官网文章作了点评和解读,事件驱动的异步处理架构.极强的模块化等是个绝好的框架,接着我细读了官网的<Scr ...
- windows批处理(.bat)
转自http://www.cnblogs.com/shiney/archive/2011/07/04/2097236.html 本文在运行中有一些小小的问题,我修改了一下,将会在稳重标出 批处理文件是 ...
- Mining 影响数据挖掘结果的 5 方面
第一个: 数据类型. 对象的不同属性会用不同的数据类型来描述,如 年龄-->int; 生日 -->date;数据挖掘时也要对不同的类型有不同的对待. 第二个: 数据质量. 数据质量直接影 ...
- C# 单向链表数据结构 (一)
单向链表数据结构是有节点组成,每个节点包含两部分,第一部分为存储数据,第二部分为指向下一个节点的指针.注意,有两个特色的节点,分别为“头节点”和“尾节点”,头节点本身没有数据,只存储下一个节点的指针, ...
- C语言入门(20)——使用VC2013对C语言进行调试
软件调试过程中,有时会一些逻辑和内存访问方面的问题,如果没有调试器的帮助,找出何处代码导致这块内存被更改是一件非常麻烦的事情.恰当运用数据断点可以快速帮我们定位问题的所在. 1.VC的调试快捷键 F5 ...
- mysql排行榜sql的实现
SELECT num_rows AS num_rows, openid , openid, money FROM lt_cash_user ) t ORDER BY money DESC ) t1 W ...
- 全国计算机等级考试二级教程-C语言程序设计_第7章_函数
函数执行,从右到左执行 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<string.h> main() ...
- 在mangento后台调用wysiwyg编辑器
在mangento后台调用操蛋的wysiwyg编辑器: 1.在头部加载TincyMCE protected function _prepareLayout() { parent::_prepa ...