【设计模式】说一说你了解的工厂模式?(约151字)

工厂方法

定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使得一个类的实例化延迟到子类

场景:

  • 比如连接池、线程池
  • 隐藏对象真实类型
  • 对象创建会有很多参数来决定如何创建
  • 创建对象有复杂的依赖关系

背景

实现一个导出数据的接口,让客户选择数据的导出方式

C++

class IExport {

};

class ExportXml : public IExport {

};

class IExportFactory {
public:
    virtual IExport *newExport() = 0;
};

class ExportXmlFactory : public IExportFactory {
public:
    IExport *NewExport() {
        IExport *temp = new ExportXml;
        return temp;
    }
};

class ExportData {
public:
    ExportData(IExportFactory *factory) : factory(factory) {}
    ~ExportData() {
        if (factory) {
            delete factory;
            factory = nullptr;
        }
    }
    bool Export(const std::string &data) {
        IExport *e = factory->newExport();
        e->Export(data);
    }
private:
    IExportFactory *factory;
};

int main() {
    ExportData ed(new ExportXmlFactory);
    ed.Export("hello");
}

将工厂传递给需要的对象,又工厂去创建对象,传入不同的工厂就可以创建不同的对象

THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容