seo 发表于 2022-5-31 12:48:22

c++实现简单工厂完整源代码

c++实现简单工厂完整源代码​​SimpleFactory.hpp​​​​main.cpp​​
SimpleFactory.hpp#ifndef __SIMPLE_FACTORY__
#define __SIMPLE_FACTORY__
#include
#include
using namespace std;
//抽象产品类AbstractProduct
class AbstractSportProduct
{
public:
AbstractSportProduct(){
}
virtual ~AbstractSportProduct(){};
//抽象方法:
// virtual void printName(){};
virtual void printName() = 0;
// virtual void play(){};
virtual void play() = 0;
};
//具体产品类Basketball
class Basketball :public AbstractSportProduct
{
public:
Basketball(){
    printName();
    play();
}
~Basketball()
{
}
//具体实现方法
void printName(){
    printf("Jungle get Basketball\n");
}
void play(){
    printf("Jungle play Basketball\n");
}
};
//具体产品类Football
class Football :public AbstractSportProduct
{
public:
Football(){
    printName();
    play();
}
~Football()
{
}
//具体实现方法
void printName(){
    printf("Jungle get Football\n");
}
void play(){
    printf("Jungle play Football\n");
}
};
//具体产品类Volleyball
class Volleyball :public AbstractSportProduct
{
public:
Volleyball(){
    printName();
    play();
}
~Volleyball()
{
   
}
//具体实现方法
void printName(){
    printf("Jungle get Volleyball\n");
}
void play(){
    printf("Jungle play Volleyball\n");
}
};
class Factory
{
public:
std::shared_ptrAbstractSportProduct> getSportProduct(string productName)
{
    std::shared_ptrAbstractSportProduct> pro;
    if (productName == "Basketball"){
      pro = std::shared_ptrAbstractSportProduct>(new Basketball());
    }
    else if (productName == "Football"){
      pro = std::shared_ptrAbstractSportProduct>(new Football());
    }
    else if (productName == "Volleyball"){
      pro = std::shared_ptrAbstractSportProduct>(new Volleyball());
    }
    return pro;
}
};

#endif //__SIMPLE_FACTORY__
main.cpp#include
#include
#include "SimpleFactory.hpp"
int main()
{
printf("简单工厂模式\n");

//定义工厂类对象
std::shared_ptrFactory> fac = std::make_sharedFactory>();
// std::shared_ptr product = std::shared_ptr(fac->getSportProduct("Basketball"));
std::shared_ptrAbstractSportProduct> product = fac->getSportProduct("Basketball");

fac = std::make_sharedFactory>();
product = fac->getSportProduct("Football");
// product = std::shared_ptr(fac->getSportProduct("Football"));
fac = std::make_sharedFactory>();
product = fac->getSportProduct("Volleyball");
// product = std::shared_ptr(fac->getSportProduct("Volleyball"));
#ifdef win32
system("pause");
#endif
return 0;
}               
               
            
               
      
      

https://www.yilongzhijia.cn/tupian/seo365t.jpg
页: [1]
查看完整版本: c++实现简单工厂完整源代码