大话设计模式 —— 第十五章《抽象工厂模式》C++ 代码实现

本文介绍了抽象工厂模式,它是工厂方法模式的扩展,用于创建相关或依赖的产品族。文章通过C++代码展示了如何实现抽象工厂模式,讨论了其优缺点和适用场景,并与工厂方法模式进行了对比,强调了降低耦合度的设计目标。
摘要由CSDN通过智能技术生成

目录

前言

定义

优点

缺点

应用场景

抽象工厂模式与工厂方法模式的区别

总结


前言


学习完工厂方法模式,发现工厂方法模式存在一个严重的问题:

  • 一个具体工厂只能创建一类产品

而在实际过程中,一个工厂往往可能需要生产不同类型的产品。为了解决上述的问题,可以使用抽象工厂模式来解决。

 


定义


  •  为创建一组相关或者相互依赖的对象提供一个接口,而且无须指定它们的具体类。
  •         简单的说,抽象工厂模式是工厂方法模式的升级版本,当存在多个产品族时,产品族之间是存在相关或者依赖关系,可以使用抽象工厂来创建产品。
  • 产品族(也称为产品线),用一个生产电脑的例子来举例,假如一个工厂是生产联想和惠普的电脑,但是电脑也有多个产品线:台式机、笔记本和平板等等。联想和惠普都在生产这些不同产品线上的电脑。
抽象工厂模式UML 图
  • 抽象产品(AbstractProduct):一个抽象类或接口,负责定义具体产品必须实现的方法;
  • 具体产品(ConcreteProduct):定义具体工厂生产的具体产品,并实现 AbstractProduct中定义的接口。
  • 抽象工厂(AbstractFactory):一个接口或抽象类,它声明了用来创建不同产品的方法。
  • 具体工厂(ConcreteFactory):具体工厂重写AbstractFactory中的抽象方法,使该方法返回 ConcreteProduct 的实例。

 


用 C++ 代码实现 大话设计模式本章代码:

#include<iostream>
using namespace std;

class Department  // 抽象产品Department ,定义具体产品的公共接口
{
public:
	virtual ~Department() = default;
	virtual void Insert() = 0;
	virtual Department *GetDepartment() = 0;
};

// 创建具体产品类SqlserDepartment, 定义生产的具体产品;
class  SqlserDepartment :public Department 
{
public:
	void Insert()override
	{
		cout << "在SQL Server 中给 Department 表增加一条记录!" << endl;
	}
	Department *GetDepartment()override
	{
		cout <&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值