您当前的位置: 首页 > 

phymat.nico

暂无认证

  • 4浏览

    0关注

    1967博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

设计模式-创建型-抽象工厂

phymat.nico 发布时间:2017-10-07 15:33:24 ,浏览量:4

#pragma once

#ifndef ABSTRACTFACTORY_H 

#define ABSTRACTFACTORY_H 

// 抽象基类AbstractProductA,代表产品A 的抽象 
class AbstractProductA 
{ 
public: 
	AbstractProductA() {} 
	virtual ~AbstractProductA(){}; 
}; 

// 派生类ConcreateProductA1,继承自AbstractProductA,代表产品A 的第一种实现 
class ConcreateProductA1 : public AbstractProductA 
{ 
public: 
	ConcreateProductA1(); 
	virtual ~ConcreateProductA1(); 
}; 

// 派生类ConcreateProductA2,继承自AbstractProductA,代表产品A 的第二种实现 
class ConcreateProductA2 : public AbstractProductA 
{ 
public: 
	ConcreateProductA2(); 
	virtual ~ConcreateProductA2(); 
}; 

// 抽象基类AbstractProductB,代表产品B 的抽象 
class AbstractProductB 
{ 
public: 
	AbstractProductB() {} 
	virtual ~AbstractProductB(){}; 
}; 

// 派生类ConcreateProductB1,继承自AbstractProductB,代表产品B 的第一种实现 
class ConcreateProductB1 : public AbstractProductB 
{ 
public: 
	ConcreateProductB1(); 
	virtual ~ConcreateProductB1(); 
}; 

// 派生类ConcreateProductB2,继承自AbstractProductB,代表产品B 的第二种实现 
class ConcreateProductB2 : public AbstractProductB 
{ 
public: 
	ConcreateProductB2(); 
	virtual ~ConcreateProductB2(); 
}; 

// 抽象基类AbstractFactory,工厂的抽象类,生产产品A 和产品B 
class AbstractFactory 
{ 
public: 
	AbstractFactory(){} 
	virtual ~AbstractFactory(){} 
	virtual AbstractProductA* CreateProductA() = 0; 
	virtual AbstractProductB* CreateProductB() = 0; 
}; 

// 派生类ConcreateFactory1,继承自AbstractFactory 

// 生产产品A 和产品B 的第一种实现 
class ConcreateFactory1 : public AbstractFactory 
{ 
public: 
	ConcreateFactory1(); 
	virtual ~ConcreateFactory1(); 
	virtual AbstractProductA* CreateProductA(); 
	virtual AbstractProductB* CreateProductB(); 
}; 

// 派生类ConcreateFactory2,继承自AbstractFactory 

// 生产产品A 和产品B 的第二种实现 
class ConcreateFactory2 : public AbstractFactory 
{ 
public: 
	ConcreateFactory2(); 
	virtual ~ConcreateFactory2(); 
	virtual AbstractProductA* CreateProductA(); 
	virtual AbstractProductB* CreateProductB(); 
}; 

#endif 
#include "StdAfx.h"
#include "abstractfactory_impl.h"

#include  

ConcreateProductA1::ConcreateProductA1() 
{ 
	std::cout             
关注
打赏
1659628745
查看更多评论
0.0436s