抽象工厂模式

抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。

介绍

意图:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。

主要解决:主要解决接口选择的问题。

何时使用:系统的产品有多于一个的产品族,而系统只消费其中某一族的产品。

如何解决:在一个产品族里面,定义多个产品。

关键代码:在一个工厂里聚合多个同类产品。

应用实例:工作了,为了参加一些聚会,肯定有两套或多套衣服吧,比如说有商务装(成套,一系列具体产品)、时尚装(成套,一系列具体产品),甚至对于一个家庭来说,可能有商务女装、商务男装、时尚女装、时尚男装,这些也都是成套的,即一系列具体产品。假设一种情况(现实中是不存在的,要不然,没法进入共产主义了,但有利于说明抽象工厂模式),在您的家中,某一个衣柜(具体工厂)只能存放某一种这样的衣服(成套,一系列具体产品),每次拿这种成套的衣服时也自然要从这个衣柜中取出了。用 OOP 的思想去理解,所有的衣柜(具体工厂)都是衣柜类的(抽象工厂)某一个,而每一件成套的衣服又包括具体的上衣(某一具体产品),裤子(某一具体产品),这些具体的上衣其实也都是上衣(抽象产品),具体的裤子也都是裤子(另一个抽象产品)。

优点:当一个产品族中的多个对象被设计成一起工作时,它能保证客户端始终只使用同一个产品族中的对象。

缺点:产品族扩展非常困难,要增加一个系列的某一产品,既要在抽象的 Creator 里加代码,又要在具体的里面加代码。

使用场景: 1、QQ 换皮肤,一整套一起换。 2、生成不同操作系统的程序。

注意事项:产品族难扩展,产品等级易扩展。

实现

我们将创建 ShapeColor 接口和实现这些接口的实体类。下一步是创建抽象工厂类 AbstractFactory。接着定义工厂类 ShapeFactoryColorFactory,这两个工厂类都是扩展了 AbstractFactory。然后创建一个工厂创造器/生成器类 FactoryProducer

AbstractFactoryPatternDemo,我们的演示类使用 FactoryProducer 来获取 AbstractFactory 对象。它将向 AbstractFactory 传递形状信息 ShapeCIRCLE / RECTANGLE / SQUARE),以便获取它所需对象的类型。同时它还向 AbstractFactory 传递颜色信息 ColorRED / GREEN / BLUE),以便获取它所需对象的类型。

天道酬勤系列之抽象工厂模式介绍相关推荐

  1. 23种设计模式-抽象工厂模式介绍加实战代码

    1.描述 通俗一点来讲,抽象工厂模式就是在工厂方法模式的抽象工厂类中规范多个同类产品. 工厂方法模式是针对一个产品系列的,而抽象工厂模式是针对多个产品系列的,即工厂方法模式是一个产品系列一个工厂,而抽 ...

  2. 看图记设计模式【三】,创建模式系列:抽象工厂模式

    抽象工厂模式 意图 抽象工厂模式是一种创建型设计模式, 它能创建一系列相关的对象, 而无需指定其具体类. 一图说明: 还是老话,请在阅读本篇文章后,记住此图.抽象工厂模式也就记得大半了 图解: 抽象工 ...

  3. 抽象工厂模式 java实例 tclhaier_Unity常用的设计模式_工厂模式系列之抽象工厂模式...

    在工厂方法模式中,工厂只负责生产具体的产品,每一个具体的工厂对应着一个具体的产品,工厂方法也具有唯一性,如果有时候我们需要一个工厂方法提供多个产品而不是一个单一的产品,例如:海尔品牌不止生产海尔TV, ...

  4. 设计模式:抽象工厂模式(C++)【工厂方法升级】

    抽象工厂模式介绍 在上一集的设计模式:工厂方法模式(C++)我们使用工厂方法模式能带来一系列的好处,我们将生成产品的工厂类进行了抽象化,一种产品 用专门的工厂进行生产.我们也知道 当产品种类特别多的时 ...

  5. JAVA设计模式之抽象工厂模式

    本文继续介绍23种设计模式系列之抽象工厂模式. 前面已经介绍过简单工厂模式和工厂方法模式,这里继续介绍第三种工厂模式-抽象工厂模式,还是以汽车的制造为例. 例子背景: 随着客户的要求越来越高,宝马车需 ...

  6. JavaScript 前端简单工厂模式、工厂方法模式、抽象工厂模式优缺点及详解 — 设计模式《二》

    工厂模式 前言:就前端 JavaScript 语言来说,可以把简单工厂模式.工厂方法模式.抽象工厂模式归纳为一种即工厂模式: 一. 简单工厂模式 介绍/概述: 简单工厂模式的工厂类一般是使用静态方法, ...

  7. 设计模式学习笔记(三)工厂模式中的简单工厂、工厂方法和抽象工厂模式之间的区别

    设计模式中的工厂模式(Factory Design pattern)是一个比较常用的创建型设计模式,其中可以细分为三种:简单工厂(Simple Factory).工厂方法(Factory Method ...

  8. 设计模式之创建型模式(抽象工厂模式)

    抽象工厂模式介绍 – 将关键零件组装成产品 为创建一组相关或相互依赖的对象,而且无需指定他们的具体类. 抽象工厂的工作就是将"抽象零件"组装成"抽象产品" 我们 ...

  9. 【设计模式】之抽象工厂模式详解与应用(三)

    开心一刻 [问:"怎么样才能给足男人面子"? 神回复:"露出腿上的淤青啊".] 课程介绍 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式.抽象工 ...

最新文章

  1. kuayu react_react跨域解决方案
  2. ARM64的启动过程之(二):创建启动阶段的页表
  3. Spring依赖检查
  4. windows下通过eclipse进行远程执行出错:Permission denied:
  5. for in for of区别_(for…in) VS (for…of)
  6. flex 换主轴后子元素占满_Chrome72 嵌套 flex 布局修改,你的网站可能会发生布局错乱...
  7. 局域网打印机反应慢_为什么你的Excel这么慢,这些原因必须要知道!
  8. 数据库服务器主机重启故障诊断分析
  9. 神奇的for循环,让你的for循环执行100w + 1比100w次快200w倍
  10. 【深度优先搜索】计蒜客:引爆炸弹
  11. 2019牛客多校第一场I Points Division(DP)题解
  12. win10强制关闭飞行模式_Win10一键关闭自动更新
  13. 在线协同编辑器Etherpad介绍与使用
  14. PLM与ERP的区别
  15. MacBook网络连接正常无法访问网页
  16. 看了 web.dev 的 631 篇博客,我总结了这些内容
  17. petya病毒分析_首先是WannaCry,现在是Petya –防范大规模勒索软件攻击
  18. SpringCloud(6) 分布式事务【概念、常见框架选择 - tx-lcn】
  19. 对象存储(Object-based Storage)概述
  20. 怎么用计算机做目录,word怎么生成目录,教您Word文档如何自动生成目录

热门文章

  1. linux/android驱动工程师面试相关内容总结
  2. 评谷歌对摩托罗拉移动的收购
  3. 计算机组成原理寄存器的实验原理,计算机组成原理实验报告_寄存器的原理及操作课案.docx...
  4. 谷粒商城12——购物车模块、消息队列RabbitMQ
  5. Line披露母公司Naver详情:去年营收28.4亿美元
  6. 编程语言排行,C# 和 C++ 有望超越C?
  7. 第五章 异常处理(中)
  8. display:table-cell布局
  9. 好佳居软装十大品牌 软装公司经营范围有什么?
  10. Day431.本地事务分布式事务CAP理论 -谷粒商城