设计模式——抽象工厂模式(8)
来源:互联网 发布:php new class 编辑:程序博客网 时间:2024/05/29 06:28
抽象工厂模式
每种汽车都要有发动机,轮胎,方向盘等零件,而且要想组装一辆汽车必须具有这些零件,但不同品牌的汽车所使用的零部件却不同。试用抽象工厂模式实现。
特点:定义了一个创建一系列相关或相互依赖的接口,而无需指定它们的具体类,交换产品系列 ,产品的具体类名被具体工厂的实现分离
实现代码:
#include <string>
#include <iostream>
#include <vector>
using namespace std;
//发动机抽象接口
class engime
{
public :
virtual void GetUser()=0;
virtual void InsertUser()=0;
};
//车轮抽象接口
class steel
{
public:
virtual void GetDepartment()=0;
virtual void InsertDepartment()=0;
};
//福特用户发动机
class ToyUserEngimeEngime : public engime
{
public:
virtual void GetUser()
{
cout<<"福特用户发动机"<<endl;
}
};
//福特用户轮胎
class ToyUserEngimeSteel : public steel
{
public:
virtual void GetDepartment()
{
cout<<"福特用户轮胎"<<endl;
}
};
//东风用户发动机
class ToyUserEngime : public engime
{
public:
virtual void GetUser()
{
cout<<"东风用户发动机"<<endl;
}
};
//东风用户轮胎
class ToyUserSteel: public steel
{
public:
virtual void GetDepartment()
{
cout<<"东风用户轮胎"<<endl;
}
};
//抽象工厂
class IFactory
{
public:
virtual engime* CreateUser()=0;
virtual steel* CreateDepartment()=0;
};
//福特工厂
class FtFactory : public IFactory
{
public:
virtual engime* CreateUser()
{
return new ToyUserEngimeEngime();
}
virtual steel* CreateDepartment()
{
return new ToyUserEngimeSteel();
}
};
//东风工厂
class ToyFactory : public IFactory
{
public:
virtual engime* CreateUser()
{
return new ToyUserEngime();
}
virtual steel* CreateDepartment()
{
return new ToyUserSteel();
}
};
//客户端:
int main()
{
IFactory* factory1= new ToyFactory(); //生产东风汽车
engime* user1=factory1->CreateUser();
steel* depart1 = factory1->CreateDepartment();
user1->GetUser();
depart1->GetDepartment();
/////////////////////////
IFactory* factory= new FtFactory(); //生产福特汽车
engime* user=factory->CreateUser();
steel* depart = factory->CreateDepartment();
user->GetUser();
depart->GetDepartment();
return 0;
}
- 设计模式——抽象工厂模式(8)
- 设计模式—抽象工厂(十一)
- 设计模式——抽象工厂模式
- 设计模式——抽象工厂模式
- 设计模式——抽象工厂模式
- 设计模式——抽象工厂模式
- 设计模式——抽象工厂模式
- 设计模式——抽象工厂模式
- 设计模式——抽象工厂模式
- 设计模式——抽象工厂模式
- 设计模式——抽象工厂模式
- 设计模式——抽象工厂模式
- 设计模式——抽象工厂模式
- 设计模式——抽象工厂模式
- 设计模式——抽象工厂模式
- 设计模式——抽象工厂模式
- 设计模式——抽象工厂模式
- 设计模式——抽象工厂模式
- 引用MFC指针的获取【三】
- Just Another VM Detection (was "VM Detection Combo")
- AfxGetApp() GetMainWnd()的使用
- C#引用类型和值类型的区别
- 9.半斤
- 设计模式——抽象工厂模式(8)
- 大整数乘法。。。。。
- 10.八两
- MySQL数据库中的外键约束详解
- android 中对xml 进行解析
- best in class
- hex文件结构
- 还记得那些老国手吗? 03
- jquery 中级学习