c++简单工厂模式、工厂方法模式与抽象工厂模式的实现和优缺点

简单工厂模式

使用一个单独的类(工厂)来控制其他类的实例化。

实现:制造火车和飞机(一个工厂,一个工厂生产多个产品)

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

//抽象产品类 制造的抽象类 拥有纯虚函数的类为抽象类
class Make
{
public:
	//纯虚函数 在基类中仅仅给出声明 在派生类中实现
	virtual void make() = 0;  
};

//具体产品类 制造火车的类 继承自制造抽象类
class MakeTrain:public Make
{
public:
	void make()
	{
		cout << "我可以制造火车!" << endl;
	}
};

//具体产品类 制造飞机的类 继承自制造抽象类
class MakePlane:public Make
{
public:
	void make()
	{
		cout << "我可以制造飞机!" << endl;
	}
};

//具体工厂类 将客户端和具体的制造类分离 降低耦合度
class Factory
{
private:
	MakeTrain train;
	MakePlane plane;
public:
	void make(string something)
	{
		if (something == "train")
		{
			train.make();
		}
		else if (something == "plane")
		{
			plane.make();
		}
		//用switch更好 但c++不支持switch(string)
	}
};

//客户端
int main()
{
	Factory factory;
	//客户想要制造什么 只需要告诉工厂就行了
	factory.make("train");
	factory.make("plane");

    return 0;
}

类图:(纯虚函数用斜体表示)


优点:工厂类中包

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值