C++25设计模式之抽象工厂模式

该篇博客介绍了抽象工厂模式的概念和应用场景,通过电脑组装的例子展示了如何利用抽象工厂模式来创建不同配置的主机,包括i3、i5、i7和i9以及DIY电脑。每个主机的配置由不同的产品类代表,如CPU、主板、显卡等,工厂类则负责组装这些产品。此外,还讨论了抽象工厂模式的优缺点及其扩展性。在实际应用中,通过添加新的工厂类可以方便地支持更多产品类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述
图片引用于菜鸟教程

简介:抽象工厂模式是为了创建一系列产品而提供的解决方案,和简单工厂模式不一样的是,抽象工厂模式不只是创建一种产品,而是创建产品的一系列对象

优点:扩展性高,可以通过一系列对象实现某个功能

缺点:一旦添加新产品,就需要再新增一个工厂类

例子背景:现在客户需要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()
        {
   <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值