c++设计模式之简单工厂模式

本文介绍了一个简单的工厂模式实现,通过定义一个产品抽象类和两个具体产品类(ProductA和ProductB),并创建一个静态工厂方法来根据枚举类型创建对应的产品实例。此模式简化了客户端代码,使其不必直接实例化产品类。

简单工厂模式并不是一个设计模式




#ifndef SimpleFactory_h
#define SimpleFactory_h

typedef enum ProductType
{
	ProductTypeA = 1,
	ProductTypeB = 2,
};

class Product // 产品抽象类
{
public:
	virtual void method() = 0;
};

class ProductA : public Product // 具体产品A
{
public:
	virtual void method()
	{
		printf("ProductA method.\n");
	}
};

class ProductB : public Product // 具体产品B
{
public:
	virtual void method()
	{
		printf("ProductB method.\n");
	}
};

class Factory
{
public:
	static Product *createProduct(ProductType productType)
	{
		switch (productType)
		{
		case ProductTypeA:
			return new ProductA();
		case ProductTypeB:
			return new ProductB();
		default:
			return NULL;
		}
	}
};

#endif

测试


#include <iostream>

#include "SimpleFactory.h"

int main(int argc, char **argv)
{
	Product *productA = Factory::createProduct(ProductTypeA);
	productA->method();

	Product *productB = Factory::createProduct(ProductTypeB);
	productB->method();

	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值