希赛考试网
首页 > 软考 > 软件设计师

抽象工厂模式举例

希赛网 2024-06-15 18:42:53

抽象工厂模式是一种工厂方法模式的扩展,它可以用于创建一系列相关或依赖对象的组合,而无需指定它们的具体类。这个模式的主要目的是封装一组对象的创建过程,使之与客户端分离,客户端只需要知道所需要的产品的抽象类型。

举个例子来说明,假设我们正在开发一款电子设备,包括手机和平板电脑。同时,我们想要在不同市场中发行这款设备,例如中国市场和美国市场。这两个市场的电子设备有些不同,需要分别创建不同的设备。抽象工厂模式提供的是两个抽象工厂,即中国市场工厂和美国市场工厂,它们会分别生产符合各自市场要求的手机和平板电脑。

以下从多个角度阐述抽象工厂模式:

1.结构

抽象工厂模式由抽象工厂、具体工厂、抽象产品和具体产品组成,其中:

- 抽象工厂:定义了一组可以创建不同产品的抽象方法;

- 具体工厂:继承抽象工厂并实现其中的抽象方法;

- 抽象产品:定义了所创建的产品的抽象类或接口;

- 具体产品:实现抽象产品中定义的方法。

2.优缺点

抽象工厂模式的优点:

- 可以保证客户端只使用一份代码,避免重复的工作;

- 利用一个工厂来生产一组产品来保证这些产品在一起使用;

- 提供了系统的稳定性;

- 可以和其他设计模式组合使用,如装饰器模式、单例模式、观察者模式等。

抽象工厂模式的缺点:

- 扩展困难,无法支持新种类的产品添加到系统中;

- 代码复杂度增加,需要定义很多的类和接口。

3.两个案例

3.1 同时支持多种数据库类型

假设我们正在实现一个电子商务网站,该网站需要支持多种数据库,包括MySQL和Oracle。同时,我们还需要支持两种不同的数据操作方式,一个是读写分离,另一个是主从复制。使用抽象工厂模式可以将代码分为以下几个部分:

- 抽象工厂类:定义了创建连接对象和命令对象的抽象方法。

- 具体工厂类MySQLFactory和OracleFactory:实现抽象工厂类中的创建对象方法,用于创建连接对象和命令对象。

- 抽象产品类:定义了执行SQL命令的抽象方法。

- 具体产品类MySQLCommand和OracleCommand:实现抽象产品类中的执行SQL命令的方法。

3.2 制作奶茶

现在有一家奶茶店,这家店需要根据顾客的口味和需求制作不同口味的奶茶,例如可选的茶叶种类包括绿茶、红茶、乌龙茶等,可选的味道包括原味、草莓味、香草味、奶香味等。可以利用抽象工厂模式将制作奶茶的过程分为以下几个部分:

- 抽象工厂类:定义了创建茶叶、奶和甜味剂的抽象方法。

- 具体工厂类GreenTeaFactory、BlackTeaFactory和OolongTeaFactory:实现抽象工厂类中的创建茶叶和奶的方法。

- 抽象产品类:定义了添加甜味剂和制作奶茶的抽象方法。

- 具体产品类StrawberryMilkTea、VanillaMilkTea、OriginalMilkTea和MilkTeaWithMilk:实现抽象产品类中的添加甜味剂和制作奶茶的方法。

扫码咨询 领取资料


软考.png


软件设计师 资料下载
备考资料包大放送!涵盖报考指南、考情深度解析、知识点全面梳理、思维导图等,免费领取,助你备考无忧!
立即下载
软件设计师 历年真题
汇聚经典真题,展现考试脉络。精准覆盖考点,助您深入备考。细致解析,助您查漏补缺。
立即做题

软考资格查询系统

扫一扫,自助查询报考条件