图片引用于菜鸟教程
简介:抽象工厂模式是为了创建一系列产品而提供的解决方案,和简单工厂模式不一样的是,抽象工厂模式不只是创建一种产品,而是创建产品的一系列对象
优点:扩展性高,可以通过一系列对象实现某个功能
缺点:一旦添加新产品,就需要再新增一个工厂类
例子背景:现在客户需要i3、i5、i7、i9、DIY电脑主机,而这些主机各方面组件并不相同,那么使用抽象工厂模式,在为各种主机组装时就无需制定配件的型号,它会自动根据产品自动生成需要的配件
概念:抽象工厂模式提供某个具体产品的创建,每一个工厂只负责某个对象的创建
抽象工厂模式代码:
- 抽象产品类
#pragma once
class IProduct
{
public:
virtual ~IProduct(){
}
virtual void CreateCpu() = 0;
virtual void CreateMainboard() = 0;
virtual void CreateGraphicscard() = 0;
virtual void CreateMemorybank() = 0;
virtual void CreateHarddisk() = 0;
virtual void CreatePowersupply() = 0;
virtual void CreateHeatdissipation() = 0;
virtual void CreateComputercase() = 0;
virtual void CreateComputerAccessories()
{
CreateCpu();
CreateMainboard();
CreateGraphicscard();
CreateMemorybank();
CreateHarddisk();
CreatePowersupply();
CreateHeatdissipation();
CreateComputercase();
}
};
- 具体产品类
#pragma once
#include "IProduct.h"
#include <stdio.h>
class i3Hostparts : public IProduct
{
public:
~i3Hostparts(){
}
virtual void CreateCpu()
{
printf("创建了一个12代i3Cpu\n");
}
virtual void CreateMainboard()
{
printf("创建了一个h510主板\n");
}
virtual void CreateGraphicscard()
{
printf("创建了一个3050Ti显卡\n");
}
virtual void CreateMemorybank()
{
printf("创建了一个8G内存\n");
}
virtual void CreateHarddisk()
{
printf("创建了一个250G M.2硬盘\n");
}
virtual void CreatePowersupply()
{
<