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

你可能感兴趣的文章
Objective-C实现binary tree mirror二叉树镜像算法(附完整源码)
查看>>
Objective-C实现binary tree traversal二叉树遍历算法(附完整源码)
查看>>
Objective-C实现binomial coefficient二项式系数算法(附完整源码)
查看>>
Objective-C实现BitMap算法(附完整源码)
查看>>
Objective-C实现bitonic sort双调排序算法(附完整源码)
查看>>
Objective-C实现bogo sort排序算法(附完整源码)
查看>>
Objective-C实现Boyer-Moore字符串搜索算法(附完整源码)
查看>>
Objective-C实现BP误差逆传播算法(附完整源码)
查看>>
Objective-C实现breadth First Search广度优先搜索算法(附完整源码))
查看>>
Objective-C实现BreadthFirstSearch广度优先搜索算法(附完整源码)
查看>>
Objective-C实现bubble sort冒泡排序算法(附完整源码)
查看>>
Objective-C实现Burke 抖动算法(附完整源码)
查看>>
Objective-C实现CaesarsCiphe凯撒密码算法(附完整源码)
查看>>
Objective-C实现cartesianProduct笛卡尔乘积算法(附完整源码)
查看>>
Objective-C实现check strong password检查密码强度算法(附完整源码)
查看>>
Objective-C实现chudnovsky algorithm楚德诺夫斯基算法(附完整源码)
查看>>
Objective-C实现circle sort圆形排序算法(附完整源码)
查看>>
Objective-C实现cocktail shaker sort鸡尾酒排序算法(附完整源码)
查看>>
Objective-C实现cocktailShakerSort鸡尾酒排序算法(附完整源码)
查看>>
Objective-C实现combine Without Repetitions不重复地结合算法(附完整源码)
查看>>