Design Patterns - factory pattern (Factory) (a model).

Source code for the following: Design Solutions for fine pattern -GoF 23 design patterns to achieve desorption and C ++ source code

//Product.h

#pragma once
class Product {
public:
    virtual ~Product() = 0;
protected:
    Product();
private:
};
class ConcreateProduct:public Product
{
public:
    ConcreateProduct();
    ~ConcreateProduct();
private:
protected:
};

//Product.cpp

#include"Product.h"
#include<iostream>

Product::Product()
{

}

Product::~Product()
{

}

ConcreateProduct::ConcreateProduct()
{
    std::cout << "ConcreateProduct" << std::endl;
}
ConcreateProduct::~ConcreateProduct()
{

}

//Factory.h

#pragma once
class Product;
class Factory {
public:
    virtual ~Factory() = 0;
    virtual Product* CreateProduct() = 0;
protected:
    Factory();
private:
};

class ConcreateFactory:public Factory {
public:
    ConcreateFactory();
    ~ConcreateFactory();
    Product* CreateProduct();
protected:
private:


};

//Factory.cpp

#include"Factory.h"
#include"Product.h"
#include<iostream>

Factory::Factory(){}
Factory::~Factory(){}
ConcreateFactory::ConcreateFactory()
{
    std::cout << "ConcreateFactory" << std::endl;
}
ConcreateFactory::~ConcreateFactory(){}
Product* ConcreateFactory::CreateProduct()
{
    return new ConcreateProduct();
}

//main.cpp

#include " Factory.h " 
#include " Product.h " 
#include <the iostream> int main ( int args, char * the argv []) 
{ 
    Factory's * FAC = new new ConcreateFactory (); // the class to specific retarder Subclass. 
    Pro = fac * Product> CreateProduct (); // the class object package. 
    Pro1 = fac * Product> CreateProduct ();
     return 0 ; 
}

 

Guess you like

Origin www.cnblogs.com/fourmi/p/12074937.html