4. 抽象工厂(Abstract Factory)

Intent

提供一个接口,用于创建 相关的对象家族

Class Diagram

抽象工厂模式创建的是对象家族,也就是很多对象而不是一个对象,并且这些对象是相关的,也就是说必须一起创建出来。而工厂方法模式只是用于创建一个对象,这和抽象工厂模式有很大不同。

抽象工厂模式用到了工厂方法模式来创建单一对象,AbstractFactory 中的 createProductA() 和 createProductB() 方法都是让子类来实现,这两个方法单独来看就是在创建一个对象,这符合工厂方法模式的定义。

至于创建对象的家族这一概念是在 Client 体现,Client 要通过 AbstractFactory 同时调用两个方法来创建出两个对象,在这里这两个对象就有很大的相关性,Client 需要同时创建出这两个对象。

从高层次来看,抽象工厂使用了组合,即 Cilent 组合了 AbstractFactory,而工厂方法模式使用了继承。

Implementation

public class AbstractProductA {}
public class AbstractProductB {}
public class ProductA1 extends AbstractProductA {}
public class ProductA2 extends AbstractProductA {}
public class ProductB1 extends AbstractProductB {}
public class ProductB2 extends AbstractProductB {}
public abstract class AbstractFactory {abstract AbstractProductA createProductA();abstract AbstractProductB createProductB();
}
public class ConcreteFactory1 extends AbstractFactory {AbstractProductA createProductA() {return new ProductA1();}AbstractProductB createProductB() {return new ProductB1();}
}
public class ConcreteFactory2 extends AbstractFactory {AbstractProductA createProductA() {return new ProductA2();}AbstractProductB createProductB() {return new ProductB2();}
}
public class Client {public static void main(String[] args) {AbstractFactory abstractFactory = new ConcreteFactory1();AbstractProductA productA = abstractFactory.createProductA();AbstractProductB productB = abstractFactory.createProductB();// do something with productA and productB}
}

JDK

  • javax.xml.parsers.DocumentBuilderFactory
  • javax.xml.transform.TransformerFactory
  • javax.xml.xpath.XPathFactory

《一天聊一个设计模式》 抽象工厂相关推荐

  1. 创建设计模式 - 抽象工厂设计模式

    创建设计模式 - 抽象工厂设计模式 欢迎来到java示例中的Abstract Factory Design Pattern.摘要工厂设计模式是创造模式之一.抽象工厂模式几乎类似于工厂模式,除了它更像工 ...

  2. 系统架构技能之设计模式-抽象工厂模式

    一.上篇回顾 上篇我们主要讲述了简单工厂模式和工厂模式.并且分析了每种模式的应用场景和一些优缺点,我们现在来回顾一下: 简单工厂模式:一个工厂负责所有类型对象的创建,不支持无缝的新增新的类型对象的创建 ...

  3. 常见设计模式—抽象工厂模式

    设计模式-抽象工厂模式 1.什么是抽象工厂模式 抽象工厂模式是围绕一个超级工厂创建其它工厂,是工厂方法模式的升级版本,工厂方法模式只生产一个等级的产品,而抽象工厂模式可生产多个等级的产品. 2.角色分 ...

  4. 【JAVA进阶系列】JAVA 设计模式 -- 抽象工厂模式(Abstract Factory)

    [JAVA进阶系列]JAVA 设计模式 -- 抽象工厂模式(Abstract Factory) [1.1]抽象工厂模式简介 抽象工厂者模式的类结构图 AbstractProduct(抽象产品),Abs ...

  5. 每周一个设计模式之工厂方法与抽象工厂

    工厂方法模式与抽象工厂模式,两个模式比较相似,把任何一个独立出来,好像都不太好,所以把它们放到一起来理解会更好.不管是工厂方法还是抽象工厂,都有三个要素,那就是Client,Factory,Produ ...

  6. C++设计模式--抽象工厂模式

    前言 前面有两篇文章分别介绍了简单工厂模式和工厂方法模式,这两种模式都比较常见,今天介绍工厂模式的最后一种,抽象工厂模式. 抽象工厂模式(Abstract Factory Pattern)是所有形态的 ...

  7. python工厂模式 理解_浅谈Python设计模式 - 抽象工厂模式

    声明:本系列文章主要参考<精通Python设计模式>一书,并且参考一些资料,结合自己的一些看法来总结而来. 在上一篇我们对工厂模式中的普通工厂模式有了一定的了解,其实抽象工作就是 表示针对 ...

  8. 05设计模式——抽象工厂模式

    前言:以下总结来自龙哥---左潇龙博客. 总结的很到位,附上博客链接:http://www.cnblogs.com/zuoxiaolong/p/pattern6.html 抽象工厂模式算是工厂相关模式 ...

  9. C++设计模式-抽象工厂模式

    目录 基本概念 代码与实例 基本概念 抽象工厂模式(Abstract Factory),提供一个创建一系列相关或相互依赖对象的接口,从而无需指定他们具体的类. 抽象工厂的好处: 1. 易于交换产品系列 ...

最新文章

  1. Hyper-V虚拟化测试05防火墙及证书配置
  2. Tree Recovery--POJ 2255
  3. python比c语言好学吗-C 和 Python语言先学哪个好?
  4. vs2008添加excel类编译错误解决方法
  5. BOOST_MP11_VERSION宏用法的测试程序
  6. strcpy,memcpy,memset函数实现
  7. 线下见面会,下一站定啦!
  8. Unity3D常用API
  9. python内置函数源码中啥都没有_如何查看python内置函数源码
  10. 零数科技获评《互联网周刊》2021元宇宙潜力企业TOP50
  11. redis缓存服务器介绍与配置
  12. Niushop单商户V4版强大的系统功能震撼来袭
  13. Centos7最小化安装升级至图形化
  14. BUUCTF:[SWPU2019]Network
  15. C# 修改本地以太网ip地址
  16. 普通物理拾遗----热学
  17. 【循环自相关和循环谱系列6】信号的循环平稳性(循环自相关函数)基本原理及推导
  18. OpenStreetMap开发文档
  19. lubuntu输入法设置_Ubuntu 18.04 16.04 设置输入法切换方法 中文输入法
  20. EA周报 | 字节跳动上线搜索引擎;电影《哪吒之魔童降世》累计综合票房破15亿;鸿蒙系统首发设备欲屏蔽开机广告...

热门文章

  1. UE4 HTC VIVE 多人联机
  2. S3C2440与SDRAM的地址连线分析
  3. java 输出流_Java中输入输出流方法总结
  4. python 串口助手 简书_python用pyserial读取串口问题解决
  5. 论文中地层岩性和岩组描述总结
  6. 【转】C#中枚举类型与静态变量
  7. 基于.NET平台的分层架构实战(二)——需求分析与数据库设计
  8. 浏览器字体大小设置_CSS之 浏览器解析样式的过程
  9. spring boot 对象拷贝工具(Orika)
  10. 【JS 逆向百例】如何跟栈调试?某 e 网通 AES 加密分析