创建型模式Factory和AbstractFactory

Factory模式的2个主要功能:

1)定义创建对象的接口,封装了对象的创建;2)使得具体化类的工作延迟到子类中;

 

举例如下:

vs2008编译通过:

#pragma once

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

class ConcreateProduct:public Product
{
public:
 ConcreateProduct();
 ~ConcreateProduct();
protected:

private:
};

 

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#include "StdAfx.h"
#include "Product.h"

#include <iostream>
using namespace std;

Product::Product(void)
{
}

Product::~Product(void)
{

}

ConcreateProduct::ConcreateProduct()
{
 cout<<"Concreate Product ...."<<endl;
}

ConcreateProduct::~ConcreateProduct()
{
 cout<<"Concreate exit ...."<<endl;
}

 

#pragma once

//class Product;
#include "Product.h"

class Factory_1
{
public:
 Factory_1(void);

 virtual ~Factory_1(void)=0;
 virtual Product *CreateProduct()=0;
};

class ConcreateFactory:public Factory_1
{
public:
 ~ConcreateFactory();
  ConcreateFactory();
  Product *CreateProduct();

private:

};

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#include "StdAfx.h"
#include "Factory_1.h"
#include "Product.h"

#include <iostream>
using namespace std;

Factory_1::Factory_1(void)
{
 
}

Factory_1::~Factory_1(void)
{
 
}

ConcreateFactory::ConcreateFactory()
{
 cout<< "concreateFactory ..."<<endl;
}

ConcreateFactory::~ConcreateFactory()
{
 cout<<"exit factory....."<<endl;
}

Product *ConcreateFactory::CreateProduct()
{
 return new ConcreateProduct();
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

// Factory.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "Factory_1.h"
#include "Product.h"

#include "windows.h"
#include <iostream>
using namespace std;


int _tmain(int argc, _TCHAR* argv[])
{

 Factory_1 *fac=new ConcreateFactory();
 Product *p=fac->CreateProduct();
 
 Sleep(5000);
 return 0;
}

 

结果如下:

concreateFactory ...
Concreate Product ....
请按任意键继续. . .

你可能感兴趣的:(工作,Class)