博客
关于我
【读书笔记】《大话设计模式》抽象工厂模式
阅读量:354 次
发布时间:2019-03-04

本文共 1081 字,大约阅读时间需要 3 分钟。

抽象工厂模式

1. 什么是抽抽工厂模式?

抽象工厂模式是一种用于创建一组相关或相互依赖对象的设计模式。它允许客户端无需直接指定具体类别即可获得同一产品族中不同等级的产品。这种模式特别适用于需要创建多种相互关联产品的场景。


2. 抽抽工厂模式的特点

2.1 与工厂方法模式的区别

抽象工厂模式是工厂方法模式的升级版本。工厂方法模式主要用于创建单一类型的产品,而抽象工厂模式可以同时创建多个不同等级的产品。

2.2 使用条件
  • 系统中有多个产品种类,每个具体工厂创建同一种类但属于不同等级结构的产品。
  • 系统一次只可能消费某一类型的产品,例如同一品牌的产品通常只能一起使用。
2.3 优点
  • 提供了工厂方法模式的所有优点,同时还能:
    • 在类内统一管理多个等级的产品。
    • 保证客户端始终使用同一产品族。
    • 支持产品族扩展,减少代码修改。
2.4 缺点
  • 当需要新增产品时,所有工厂类都需要进行修改,增加了抽象性和理解难度。

3. 主要角色

  • 抽象工厂(Abstract Factory):提供创建产品的接口,包含多个创建方法。
  • 具体工厂(Concrete Factory):实现抽象工厂的方法,创建具体的产品。
  • 抽象产品(Product):定义产品的规范,描述产品特性。
  • 具体产品(ConcreteProduct):实现抽象产品的接口,由具体工厂创建。

4. UML图示

抽象工厂模式的主要结构包括以下角色:

  • 创建一系列相关或相互依赖的产品
  • 通过工厂接口统一管理产品的创建过程
  • 支持多个等级的产品实现

5. 具体实现

// 抽象工厂接口interface AbstractFactory {    Product1 newProduct1();    Product2 newProduct2();}// 具体工厂实现class ConcreteFactory1 implements AbstractFactory {    public Product1 newProduct1() {        return new ConcreteProduct11();    }    public Product2 newProduct2() {        return new ConcreteProduct21();    }}

6. 应用场景

  • 跨平台构件创建:如Java AWT中的不同操作系统视窗构件。
  • 产品族创建:例如电器工厂中的多种家电。
  • 数据库访问解耦:如用户和部门表的不同数据库访问。

通过以上内容,可以清晰地理解抽抽工厂模式的定义、特点及其实际应用场景。

转载地址:http://mmoe.baihongyu.com/

你可能感兴趣的文章
Power BI:如何在 Power Query 编辑器中将 Python 与多个表一起使用?
查看>>
power english (3) main text -emotion mastery - focus
查看>>
POWER ENGLISH (6) - MODEL
查看>>
power english (1) —— passion
查看>>
Power English (1) 原文
查看>>
power English (3)原文
查看>>
POWER ENGLISH(7)- repetition
查看>>
SpringBoot中集成SpringBatch详细解析与实战示例(CSV文件读取十万条数据进行业务处理后写入Mysql数据库)
查看>>
powerbi 一张表在另外一张表中出现的数量_PowerBi之初步学习笔记
查看>>
QGIS怎样设置简体中文以及新建可编辑的多边形的图层
查看>>
PowerBuilder 使用自定义事件触发键盘Enter事件
查看>>
PowerCreatorCMS UploadResourcePic 任意文件上传漏洞复现
查看>>
PowerDesigner 使用的一些技巧(转)
查看>>
QGIS在Windows上下载安装与建立空间数据库连接
查看>>
PowerDesigner165安装婆姐汉花教程
查看>>
PowerDesigner使用教程:设置注释、默认值属性
查看>>
PowerDesigner使用教程:不显示背景网格
查看>>
PowerDesigner使用教程:创建数据模型以及导出
查看>>
PowerDesigner使用教程:右侧工具栏显示/隐藏
查看>>
PowerDesigner使用教程:导出sql文件以及解决中文乱码问题
查看>>