采用模板来实现工厂方法

模板是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;
}

 

posted @ 2013-12-14 15:32  calabashdad  阅读(165)  评论(0编辑  收藏  举报