工厂模式

发布时间 2023-05-09 09:30:43作者: 泽良_小涛

 

#include <iostream>
#include <string>
using namespace std;
class ExportFileApi {
public:
    virtual bool exportData(string data) = 0;
protected:
    ExportFileApi(){}
};

//具体化的子类
class ExportTxtFile : public ExportFileApi {
public:
    bool exportData(string data) {
        cout << "正在导出数据" << data << "到csv文件" << endl;
        return true;
    }
};

//生成数据到数据库
class ExportDB :public ExportFileApi {
public:
    bool exportData(string data) {
        cout << "正在导出数据" << data << "到数据库" << endl;
        return true;
    }
};

//实现一个ExportOperate,这个叫导出数据的业务功能对象
class ExportOperate {//他也是接口
public:
    bool exportData(string data) {
        ExportFileApi* pApi = factoryMethod();
        return pApi->exportData(data);
    }
protected:
    virtual ExportFileApi* factoryMethod() = 0;
};

//具体的实现对象,完成导出工作
class ExportTxtFileOperate : public ExportOperate {
protected:
    ExportFileApi* factoryMethod() {
        return new ExportTxtFile();
    }
};

class ExportDBOperate :public ExportOperate {
protected:
    ExportFileApi* factoryMethod() {
        return new ExportDB;
    }
};

int main() {
    ExportOperate* pOperate = new ExportTxtFileOperate();
    pOperate->exportData("Haha");
    system("pause");
    return 0;
}
简单的实现方法