这篇文章主要讲解了C++设计模式之抽象工厂模式的详细解析,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。
抽象工厂模式(Abstract Factory),提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。
通常是在运行时刻在创建一个ConcreteFactory类的实例,这个具体的工厂再创建具有特定实现的产品对象,也就是说,为创建不同的产品对象,客户端应使用不同的具体工厂。
abstractproducta.h
#include <string>
class AbstracProductA
{
public:
AbstracProductA();
virtual ~AbstracProductA();
void Show();
virtual std::string Name();
};
class ConcreteProductA1 : public AbstracProductA
{
public:
ConcreteProductA1();
std::string Name() override;
};
class ConcreteProductA2 : public AbstracProductA
{
public:
ConcreteProductA2();
std::string Name() override;
};
abstractfactory.h
#include "abstracproducta.h"
#include "abstracproductb.h"
class AbstractFactory
{
public:
AbstractFactory();
virtual ~AbstractFactory();
virtual AbstracProductA* CreateProductA() = 0;
virtual AbstracProductB* CreateProductB() = 0;
};
class ConcreteFactory1 : public AbstractFactory
{
public:
ConcreteFactory1();
AbstracProductA* CreateProductA() override;
AbstracProductB* CreateProductB() override;
};
class ConcreteFactory2 : public AbstractFactory
{
public:
ConcreteFactory2();
AbstracProductA* CreateProductA() override;
AbstracProductB* CreateProductB() override;
};
main.cpp
#include <iostream>
#include "abstractfactory.h"
#include "abstracproducta.h"
#include "abstracproductb.h"
using namespace std;
int main()
{
AbstractFactory* factory1 = new ConcreteFactory1();
AbstracProductA* pA1 = factory1->CreateProductA();
AbstracProductB* pB1 =factory1->CreateProductB();
pA1->Show();
pB1->Show();
AbstractFactory* factory2 = new ConcreteFactory2();
AbstracProductA* pA2 = factory2->CreateProductA();
AbstracProductB* pB2 =factory2->CreateProductB();
pA2->Show();
pB2->Show();
return 0;
}
运行结果
抽象工厂模式的优点
模式的缺点
看完上述内容,是不是对C++设计模式之抽象工厂模式的详细解析有进一步的了解,如果还想学习更多内容,欢迎关注亿速云行业资讯频道。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。