https://blog.csdn.net/sinat_21107433/article/details/102598181
#include <QCoreApplication>
#include <QDebug>
/// 抽象产类AbstractProduct
class AbstractSportProduct
{
public:
AbstractSportProduct(){}
virtual ~AbstractSportProduct();
//抽象方法
virtual void printName() = 0;
virtual void play() = 0;
};
AbstractSportProduct::~AbstractSportProduct()
{
}
/// 具体产品类Basketball
class Basketball : public AbstractSportProduct
{
public:
Basketball()
{
printName();
play();
}
//具体实现放法
void printName();
void play();
};
//具体实现放法
void Basketball::printName()
{
qDebug()<< "CCB Get Basketball";
}
void Basketball::play()
{
qDebug()<< "CCB Play Basketball";
}
/// 具体产品类Football
class Football : public AbstractSportProduct
{
public:
Football()
{
printName();
play();
}
//具体实现放法
void printName();
void play();
};
//具体实现放法
void Football::printName()
{
qDebug()<< "CCB Get Football";
}
void Football::play()
{
qDebug()<< "CCB Play Football";
}
/// 具体产品类Volleball
class Volleball : public AbstractSportProduct
{
public:
Volleball()
{
printName();
play();
}
//具体实现放法
void printName();
void play();
};
//具体实现放法
void Volleball::printName()
{
qDebug()<< "CCB Get Volleball";
}
void Volleball::play()
{
qDebug()<< "CCB Play Volleball";
}
/// 定义工厂类和工厂方法
class Factory
{
public:
AbstractSportProduct *getSportProduct(QString productName)
{
AbstractSportProduct *pro = nullptr;
if(productName == "Basketball")
{
pro = new Basketball;
}
if(productName == "Football")
{
pro = new Football;
}
if(productName == "Volleball")
{
pro = new Volleball;
}
return pro;
}
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
qDebug()<< "简单工厂模式";
//定义工厂类对象
Factory *fac = new Factory;
AbstractSportProduct *product = nullptr;
product = fac->getSportProduct("Basketball");
product = fac->getSportProduct("Football");
product = fac->getSportProduct("Volleball");
return a.exec();
}