//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();
这两行是说明了什么?有何重大意义?
#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();
这两行是说明了什么?有何重大意义?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货