设计模式- 之我见---创造性(虚拟工厂)
来源:互联网 发布:iphone照片备份到mac 编辑:程序博客网 时间:2024/04/30 13:09
/*
leftright by Tony
*/
//AbstractFactory.h
#ifndef AF_HH
#define AF_HH
#include "stdafx.h"
//enum Good{Noodle,Banana,CD,Hotdog,Food};
/////////////////////////////////////////////////
/*<-虚拟工厂->*/
////////////////////////////////////////////////
class Noodle{};
class Banana{};
class CD{};
class Hotdog{};
class Food{};
class AFactory
{
public:
virtual Noodle *MakeNoodle();
virtual Banana *MakeBanana();
virtual CD * MakeCD();
virtual Hotdog *MakeHotdog();
virtual Food * MakeFood();
};
class Shop
{
public :
Shop();
virtual ~Shop();
virtual void Create(AFactory &);
private:
Noodle *N;
Banana *B;
CD * C;
Hotdog *H;
Food * F;
};
#endif
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// AbstractFactory.cpp : 定义控制台应用程序的入口点。
//抽象工厂
#include "stdafx.h"
#include "AbstractFactory.h"
Noodle *AFactory::MakeNoodle()
{
return new Noodle();
}
Banana *AFactory::MakeBanana()
{
return new Banana();
}
CD * AFactory::MakeCD()
{
return new CD();
}
Hotdog *AFactory::MakeHotdog()
{
return new Hotdog();
}
Food * AFactory::MakeFood()
{
return new Food();
}
void Shop::Create(AFactory &a)
{
this->B = a.MakeBanana();
this->C = a.MakeCD();
this->F = a.MakeFood();
this->H = a.MakeHotdog();
this->N = a.MakeNoodle();
}
Shop::~Shop()
{
if (B!=NULL)
delete B;
if (C!=NULL)
delete C;
if (F!=NULL)
delete F;
if (H!=NULL)
delete H;
if (N!=NULL)
delete N;
}
Shop::Shop()
{}
int _tmain(int argc, _TCHAR* argv[])
{
AFactory f;
Shop s;
s.Create(f);
return 0;
}
/*
leftright by Tony
*/
//////////////////有问题地方 ,还请指教...
- 设计模式- 之我见---创造性(虚拟工厂)
- 设计模式- 之我见---创造性(phototype)
- 工厂模式之我见
- 设计模式笔记之虚拟工厂模式
- 老生常谈,设计模式之我见 - 工厂模式篇
- 设计模式之我见--1 简单工厂模式
- 设计模式之我见--5 工厂方法模式
- 简单工厂模式之我见
- 设计模式之我见
- 设计模式之我见
- 设计模式之我见
- 设计模式之我见
- 设计模式 之我见
- 设计模式之我见
- 设计模式这扇窗之我见
- Singleton设计模式 - 创造性设计模式
- 设计模式之我见:外观模式
- 设计模式之我见:适配器模式
- VS2005 类关系图及代码段
- 管道的故事
- Bloom 效果的使用
- Excel 笔记
- Python生成随机数
- 设计模式- 之我见---创造性(虚拟工厂)
- jsp 连接access数据库实例
- 解析js对象的属性
- tomcat配置jsp虚拟路径
- Javascript设计网页中的下拉菜单
- 被动——主动——被动,否定的否定……
- 用javascript+PHP随机显示图片
- 在b/s开发中经常用到的javaScript技术整理
- xml c++操作