首页 > 其他 > 详细

simple_factory

时间:2014-12-06 07:45:05      阅读:271      评论:0      收藏:0      [点我收藏+]
#include <stdlib.h>
#include <iostream>
using namespace std;



class Product
{
public:
    virtual ~Product() {}
    virtual int Interface()=0;
};


class ConcreteProductA : public Product
{
public:
    ConcreteProductA() {}
    virtual ~ConcreteProductA() {}

    int Interface()
    {
        cout<<"Make my ProductA good!"<<endl;
        return -1;
    }
};

class ConcreteProductB : public Product
{
public:
    ConcreteProductB() {}
    virtual ~ConcreteProductB() {}

    int Interface()
    {
        cout<<"Make my ProductB better!"<<endl;
        return 0;
    }    
};

class ConcreteProductC : public Product
{
public:
    ConcreteProductC() {}
    virtual ~ConcreteProductC() {}

    int Interface()
    {
        cout<<"Make my ProductC best!"<<endl;
        return 1;
    }    
};



#define PRODUCTA 1
#define PRODUCTB 2
#define PRODUCTC 3


class SimpleFactory
{
public:
    static Product* CreateProduct(int iType)
    {
        switch(iType)
        {
            case PRODUCTA: return new ConcreteProductA;
            case PRODUCTB: return new ConcreteProductB;
            case PRODUCTC: return new ConcreteProductC;
            default:
            {
                cerr<<"Sorry, I have not the product you need!"<<endl;
                return NULL;
            }
        }
    }
};


#define CUSTOMER main
#define DESTROY(ptr) if (ptr) { delete ptr; ptr = NULL; }

int CUSTOMER(int argc, char** argv)
{
    Product* pProduct = NULL;
    
    pProduct = SimpleFactory::CreateProduct(PRODUCTA);
    pProduct->Interface();
    DESTROY(pProduct);

    pProduct = SimpleFactory::CreateProduct(PRODUCTB);
    pProduct->Interface();
    DESTROY(pProduct);    
    
    pProduct = SimpleFactory::CreateProduct(PRODUCTC);
    pProduct->Interface();
    DESTROY(pProduct);


    return EXIT_SUCCESS;
}

 

simple_factory

原文:http://www.cnblogs.com/stanley198610281217/p/4147765.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!