设计模式:abstract factory模式

含义:抽象工厂将“抽象零件”组装成“抽象产品”

理解:相比于工厂方法模式,可以根据不同的接口创建不同的产品,说白了就是将一个接口变成两个接口,各自返回不同的抽象产品

例子:

class Car //抽象产品
{
public:
	virtual void name() = 0;
};

class BenciCar: public Car
{
public:
	void name()
	{
		cout << "BenCi Car" << endl;
	}
};

class BaomaCar: public Car
{
public:
	void name()
	{
		cout << "Baoma Car" << endl;
	}
};
class Bus //抽象产品
{
public:
	virtual void name() = 0;
};

class BenciBus: public Bus
{
public:
	void name()
	{
		cout << "Benci Bus" << endl;
	}
};

class BaomaBus: public Bus
{
public:
	void name()
	{
		cout << "Baoma Bus" << endl;
	}
};
class Factory //抽象工厂
{
public:
	virtual Car* createCar() = 0;  //隐藏具体的复杂的对象创建过程
	virtual Bus* createBus() = 0;  //隐藏具体的复杂的对象创建过程
};

class BenciFactory: public Factory
{
public:
	Car* createCar()
	{
		return new  BenciCar;
	}
	
	Bus* createBus()
	{
		return new BenciBus;
	}
};

class BaomaFactory: public Factory
{
public:
	Car* createCar()
	{
		return new  BaomaCar;
	}
	
	Bus* createBus()
	{
		return new BaomaBus;
	}
};
int main() 
{
	Factory* bmf = new BaomaFactory();
	Car* bmc = bmf->createCar();
	Bus* bmb = bmf->createBus();
	bmc->name();
	bmb->name();
	
	Factory* bcf = new BenciFactory();
	Car* bcc = bcf->createCar();
	Bus* bcb = bcf->createBus();
	bcc->name();
	bcb->name();
	
	return 0;
}

转载于:https://www.cnblogs.com/chusiyong/p/11433204.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值