Java 参考 https://blog.csdn.net/u012156116/article/details/80857255
1、简单工厂模式
#include <iostream>
#include <map>
using namespace std;
class IPerson
{
public:
virtual void printRole(){
}
static IPerson* create();
};
class TSaler:IPerson
{
public:
virtual void printRole()
{
cout << "I'm a Saler." << endl;
}
static IPerson* create()
{
TSaler *pstSaler = new TSaler();
return (IPerson*)pstSaler;
}
};
class TBuyer:IPerson
{
public:
virtual void printRole()
{
cout << "I'm a Buyer." << endl;
}
static IPerson* create()
{
TBuyer *pstBuyer = new TBuyer();
return (IPerson*)pstBuyer;
}
};
enum ROLE_E
{
ROLE_SALER,
ROLE_BUYER,
ROLE_BUTT
};
const map<ROLE_E, IPerson*> g_personTable = {
{
ROLE_SALER, TSaler::create()},
{
ROLE_BUYER, TBuyer::create()}
};
class EasyFactory
{
public:
static IPerson* createRole(ROLE_E role)
{
map<ROLE_E, IPerson*>::const_iterator itr = g_personTable.begin();
for (; itr != g_personTable.end(); itr++)
{
if (role == itr->first)
{
return itr->second;