抽象工厂模式,是一种对象创建型模式,提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
学习抽象工厂模式,根据自己的理解写了个抽象工厂模式的例子,如下
AllObj.h 文件,定义了各个相关或相互依赖的类
#include <string>
#include <iostream>
using namespace std;
class CObj{};
class CPerson : public CObj{
public:
CPerson(const char* name)
{
m_name.assign(name);
}
void PrintName()
{
cout<<"my name is: "<<m_name<<endl;
}
private:
string m_name;
int m_age;
string m_address;
string m_phone;
};
class CHouse : public CObj{
private:
double length;//长
double breadth;//宽
double high;//高
};
class CCar : public CObj{
private:
string brand;
string type;
};
#include "AllObj.h"
class CAllFactory{
public:
virtual CPerson * MakePerson(const char* name)
{
return new CPerson(name);
}
virtual CHouse * MakeHouse()
{
return new CHouse;
}
virtual CCar * MakeCar()
{
return new CCar;
}
};
main.cpp 文件,入口及测试函数
#include "stdafx.h"
#include "AbstractFactoryModel.h"
int main(int argc, char * argv[])
{
CAllFactory factory;
CPerson *persion = factory.MakePerson("John");
CHouse *house = factory.MakeHouse();
CCar *car = factory.MakeCar();
persion->PrintName();
return 0;
}