Abstract Factory(抽象工廠模式)


#include 
"AbstractProductB.h"
#include 
"AbstractProductA.h"
#include 
"AbstractFactory.h"

class Client
{

public:
    Client();
    
virtual ~Client();
    AbstractProductB 
*m_AbstractProductB;
    AbstractProductA 
*m_AbstractProductA;
    AbstractFactory 
*m_AbstractFactory;

};
#include 
"Client.h"
Client::Client(){
}
Client::
~Client(){
}
class AbstractFactory
{
public:
    AbstractFactory();
    
virtual ~AbstractFactory();

    
virtual CreateProductA();
    
virtual CreateProductB();
};
AbstractFactory::AbstractFactory(){
}
AbstractFactory::
~AbstractFactory(){
}
AbstractFactory::CreateProductA(){
}
AbstractFactory::CreateProductB(){
}
#include 
"AbstractFactory.h"
/**
 * This class implements the operations to create concrete product objects.
 
*/
class ConcreteFactory1 : public AbstractFactory
{

public:
    ConcreteFactory1();
    
virtual ~ConcreteFactory1();
    CreateProductA();
    CreateProductB();
};
#include 
"ConcreteFactory1.h"
ConcreteFactory1::ConcreteFactory1(){
}
ConcreteFactory1::
~ConcreteFactory1(){
}
ConcreteFactory1::CreateProductA(){
}
ConcreteFactory1::CreateProductB(){
}
#include 
"AbstractFactory.h"

/**
 * This class implements the operations to create concrete product objects.
 
*/
class ConcreteFactory2 : public AbstractFactory
{

public:
    ConcreteFactory2();
    
virtual ~ConcreteFactory2();

    CreateProductA();
    CreateProductB();

};
#include 
"ConcreteFactory2.h"


ConcreteFactory2::ConcreteFactory2(){

}



ConcreteFactory2::
~ConcreteFactory2(){

}





ConcreteFactory2::CreateProductA(){

}


ConcreteFactory2::CreateProductB(){

}
class AbstractProductA
{

public:
    AbstractProductA();
    
virtual ~AbstractProductA();

};
#include 
"AbstractProductA.h"


AbstractProductA::AbstractProductA(){

}



AbstractProductA::
~AbstractProductA(){

}
class AbstractProductB
{

public:
    AbstractProductB();
    
virtual ~AbstractProductB();

};
#include 
"AbstractProductB.h"


AbstractProductB::AbstractProductB(){

}



AbstractProductB::
~AbstractProductB(){

}

#include 
"AbstractProductA.h"

/**
 * This class (a) defines a product object to be created by the corresponding
 * concrete factory, and (b) implements the AbstractProduct interface.
 
*/
class ProductA1 : public AbstractProductA
{

public:
    ProductA1();
    
virtual ~ProductA1();

};
#include 
"ProductA1.h"


ProductA1::ProductA1(){

}



ProductA1::
~ProductA1(){

}
posted @ 2009-02-18 17:59  jerry550409  阅读(151)  评论(0编辑  收藏  举报