//Factory.h #ifndef _FACTORY_H_ 
#define _FACTORY_H_ class Product; class Factory 

public: 
virtual ~Factory() = 0;  virtual Product* CreateProduct() = 0; //对外接口,供子类实例化protected: 
Factory(); private: }; class ConcreteFactory : public Factory 

public:  ~ConcreteFactory();  ConcreteFactory();  Product* CreateProduct(); protected: private: }; #endif //~_FACTORY_H_ /*
concrete  
adj. 
实体的, 有形的 
确实的, 明确的, 确定的 
*/
//Factory.cpp #include "Factory.h" 
#include "Product.h" #include <iostream> 
using namespace std; Factory::Factory() 
{ } Factory::~Factory() 
{ } ConcreteFactory::ConcreteFactory() 

cout << "ConcreteFactory....." << endl; 
} ConcreteFactory::~ConcreteFactory() 

cout << "~ConcreteFactory....." << endl; 
} Product* ConcreteFactory::CreateProduct() 

return new ConcreteProduct(); //在这个Factory对外接口中,子类在此new并实例化

//Product.h #ifndef _PRODUCT_H_ 
#define _PRODUCT_H_ class Product 

public: 
virtual ~Product() = 0; //此类不允许有实例,前有virtual,保证delete此Product*型指针,会调用真正实例的释构protected: 
Product(); private: }; class ConcreteProduct : public Product 

public: 
~ConcreteProduct();  ConcreteProduct(); protected: private: }; #endif //~_PRODUCT_H_ /*
concrete  
adj. 
实体的, 有形的 
确实的, 明确的, 确定的 
*/
//Product.cpp #include "Product.h" #include <iostream> 
using namespace std; Product::Product() 
{ } Product::~Product() 
{ } ConcreteProduct::ConcreteProduct() 

cout << "ConcreteProduct...." << endl; 
} ConcreteProduct::~ConcreteProduct() 

cout << "~ConcreteProduct...." << endl; 

// Test.cpp : 定义控制台应用程序的入口点。
//#include "stdafx.h"
#include "Factory.h"
#include "Product.h"int _tmain(int argc, _TCHAR* argv[])
{
Factory *pFac = new ConcreteFactory; Product *pPro = pFac->CreateProduct(); delete pPro;
delete pFac; return 0;
}Factory *pFac = new ConcreteFactory;
Product *pPro = pFac->CreateProduct();

这两行是说明了什么?有何重大意义?