博客
关于我
【读书笔记】《大话设计模式》抽象工厂模式
阅读量: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/

你可能感兴趣的文章
PHP实现的MongoDB数据增删改查
查看>>
PHP实现的SSO单点登录系统,拿走就用吧
查看>>
php实现短信验证功能
查看>>
RabbitMQ连接报错(1)—— None of the specified endpoints were reachable
查看>>
php实现逆转数组
查看>>
PHP实现通过geoip获取IP地理信息
查看>>
PHP实现页面静态化、纯静态化及伪静态化
查看>>
php容许ajax跨域,PHP设置允许ajax跨域请求的两种常见方法
查看>>
RabbitMQ进程结构分析与性能调优
查看>>
PHP对接百度地图
查看>>
PHP对表单提交特殊字符的过滤和处理
查看>>
php对象引用和析构函数的关系
查看>>
RabbitMQ HTTP 认证后端项目常见问题解决方案
查看>>
PHP将图片转换成base64格式(优缺点)
查看>>
php将多个值的数组去除重复元素
查看>>
php局域网上传文件_PHP如何通过CURL上传文件
查看>>
PHP工具插件大全
查看>>
php布尔值的++
查看>>
PHP常量、变量作用域详解(一)
查看>>
PHP应用目录结构设计
查看>>