C++工厂模式简单实现

版权声明:本文为博主原创文章,未经博主允许不得转载。文章中有连接失效或是技术谬误的地方,请与我联系。 https://blog.csdn.net/luchengtao11/article/details/82379217

Product.h

#ifndef _PRODUCT_H_
#define _PRODUCT_H_
class AbstractProduct
{
public:
	virtual void operation() = 0;
	virtual ~AbstractProduct() {};
};

class ProductA :public AbstractProduct
{
public:
	void operation();
};
class ProductB :public AbstractProduct
{
public:
	void operation();
};
#endif // !_PRODUCT_H_

Factory.h

#ifndef _FACTORY_H_
#define _FACTORY_H_
#include "Product.h"
class AbstractFactory
{
public:
	virtual AbstractProduct *createProduct() = 0;
	virtual ~AbstractFactory() {};
};

class FactoryA:public AbstractFactory
{
public:
	AbstractProduct * createProduct();
};

class FactoryB :public AbstractFactory
{
public:
	AbstractProduct * createProduct();
};
#endif // !_FACTORY_

Product.cpp

#include "Product.h"
#include <iostream>
using namespace std;
void ProductA::operation()
{
	cout << "Product A" << endl;
}

void ProductB::operation()
{
	cout << "Product B" << endl;
}

Factory.cpp

#include "Factory.h"

AbstractProduct * FactoryA::createProduct()
{
	return new ProductA();
}

AbstractProduct * FactoryB::createProduct()
{
	return new ProductB();
}

Main.cpp

#include "Factory.h"
#include "Product.h"
#include <iostream>



int main()
{
	AbstractFactory *factory = new FactoryA();
	AbstractProduct *product = factory->createProduct();
	product->operation();
	delete factory;
	factory = NULL;
	delete product;
	product = NULL;

	factory = new FactoryB();
	product = factory->createProduct();
	product->operation();
	delete factory;
	factory = NULL;
	delete product;
	product = NULL;
}

猜你喜欢

转载自blog.csdn.net/luchengtao11/article/details/82379217