采用模板来实现工厂方法
模板是c++中灰常好用和强大的方法。
传统的方法可以采用<类型,回调创建函数>的方式来实现,现在尝试下采用模板方法来实现。
//采用模板来写工厂方法 #include <iostream> class Product { public: Product() {std::cout << "Product()" << std::endl;} virtual ~Product() {std::cout << "~Product" << std::endl;} virtual void use_me() = 0; }; template <typename T> class Factory { public: static Product * CreateProduct() { return new T(); } }; class ProductA : public Product { public: ProductA() {std::cout << "ProductA()\n";} ~ProductA(){std::cout << "~ProductA()\n";} void use_me() {std::cout << "A used\n";} }; class ProductB : public Product { public: ProductB() {std::cout << "ProductB()\n";} ~ProductB(){std::cout << "~ProductB()\n";} void use_me() {std::cout << "B used\n";} }; int main() { Product *proa = Factory<ProductA>::CreateProduct(); delete proa; return 0; }