定义: 提供一个创建对象实例的功能,不关心其具体的实现。被创建的类可以是接口(抽象类),也可以是具体的类。
类图:
实现:
//Api.h class Api { protected: Api(){} //屏蔽构造函数,体现接口 public: virtual void test(std::string s) = 0; //纯虚函数 }; class ImpleOne : public Api { public: void test(std::string s) { std::cout << "ImpleOne: " << s; } }; class ImpleTwo : public Api { public: void test(std::string s) { std::cout << "ImpleTwo: " << s; } }; class Factory {//简单工厂 public: static Api* createApi(int type) { Api* p = nullptr; if (type == 1) p = new ImpleOne(); if (type == 2) p = new ImpleTwo(); return p; } };
//main.cpp #include <iostream> #include <string> #include "Api.h" int main(void) {//Client Api* p = Factory::createApi(1); p->test("简单工厂"); Api* p2 = Factory::createApi(2); p2->test("简单工厂"); return 0; }
Factory类使得客户端与ImpleOne和ImpleTwo类解耦合。客户端只专注于创建而不关心其类实现的细节。
C++设计 简单工厂实用工程技术-动态创建对象与配置化并发https://blog.csdn.net/qq_58665528/article/details/122625792