C++设计模式(3)抽象工厂模式

与抽象工厂最搭大的区别:

工厂方法模式只有一个抽象产品类,而抽象工厂模式有多个。工厂方法模式的具体工厂类只能创建一个具体产品类的实例,而抽象工厂模式可以创建多个。

优点:

1、抽象工厂模式隔离了具体类的生产,使得客户并不需要知道什么被创建。

2、当一个产品族中的多个对象被设计成一起工作时,它能保证客户端始终只使用同一个产品族中的对象。

3、增加新的具体工厂和产品族很方便,无须修改已有系统,符合“开闭原则”。

缺点:

增加新的产品等级结构很复杂,需要修改抽象工厂和所有的具体工厂类,对“开闭原则”的支持呈现倾斜性。

#include <iostream>
using namespace std;

class SingleCore{
public:
	virtual void show() = 0;
};
class SingleCoreA :public SingleCore{
public:
	void show(){ cout << "SingleCoreA" << endl; };
};
class SingleCoreB :public SingleCore{
public:
	void show(){ cout << "SingleCoreB" << endl; };
};

class MuiltCore{
public:
	virtual void show() = 0;
};
class MuiltCoreA :public MuiltCore{
public:
	void show(){ cout << "MuiltCoreA" << endl; };
};
class MuiltCoreB :public MuiltCore{
public:
	void show(){ cout << "MuiltCoreB" << endl; };
};

class Factory{
public:
	virtual SingleCore* createSingleCore() = 0;
	virtual MuiltCore* createMuiltCore() = 0;
};
class FactoryA :public Factory{
public:
	SingleCore* createSingleCore(){ return new SingleCoreA; }
	MuiltCore* createMuiltCore(){ return new MuiltCoreA; };
};
class FactoryB :public Factory{
public:
	SingleCore* createSingleCore(){ return new SingleCoreB; }
	MuiltCore* createMuiltCore(){ return new MuiltCoreB; }
};

int main()
{
	FactoryA factorya;
	FactoryB factoryb;
	SingleCore* singlecoreA = factorya.createSingleCore();
	MuiltCore* muiltcoreA = factorya.createMuiltCore();

	SingleCore* singlecoreB = factoryb.createSingleCore();
	MuiltCore* muiltcoreB = factoryb.createMuiltCore();

	singlecoreA->show();
	muiltcoreA->show();
	singlecoreB->show();
	muiltcoreA->show();
	system("pause");
}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值