三个概念:

简单工厂模式:就是一个简单的工厂类,根据不同的入参类型,返回不同的父类引用的子类对象。
工厂方法模式:就是将生成哪个子类对象的过程,延迟到工厂子类实现,工厂父类只定义接口。
抽象工厂模式:就是在工厂方法模式的基础上,将使用哪个工厂子类的逻辑,再使用简单工厂的模式生成。

互相关系

工厂方法模式,就是对简单工厂模式的改进。
抽象工厂模式,就是对工厂方法的改进。

优缺点

简单工厂模式,就是简单,但不符合开闭原则(新增类,需要修改工厂类)

为了解决简单工厂模式的开闭原则,出现了工厂方法模式。
工厂方法模式,新增类不需要修改工厂类,但可能需要新增对应的工厂类。而且多个工厂类之间,没有太多联系,不好管理。

抽象工厂模式,用简单工厂模式的套路管理了工厂方法模式的多个工厂类。但缺点就是不简单了,想简单点,就用简单工厂模式吧。

可以看出,这三个工厂模式,按照顺序,每个模式都是为了解决上一个模式的问题,但同时又有了新的问题。

举个不太恰当但很形象的例子:

背景是乙方向甲方提供一份项目的一个模块的设计。

一开始,乙方说用简单工厂模式,甲方说不好。
然后乙方改进后,说用工厂方法模式吧,甲方犹豫了一会说,觉得还能更好。
然后乙方又改进,说那就用抽象工厂模式吧,甲方看了半天,点点头说,好是好,就是有点复杂,后期怕是不好维护。

最终,甲方使用了第一版的简单工厂模式。

参考三个工厂设计模式的单独介绍:

简单工厂模式
工厂方法模式
抽象工厂模式

[设计模式] ------ 对比总结:简单工厂模式、工厂方法模式、抽象工厂模式相关推荐

  1. 【设计模式】Unity3D 简单工厂、工厂(方法)、抽象工厂模式

    创建型模式-工厂三兄弟 提示:个人学习总结,如有错误,敬请指正 文章目录 创建型模式---工厂三兄弟 一.简单工厂模式 1.简单工厂模式是什么? 2.UML图 3.实现方式 二.工厂(方法)模式 1. ...

  2. C++设计模式 | Factory工厂模式(简单工厂、工厂方法、抽象工厂)

    目录 简单工厂 工厂方法 抽象工厂 学习工厂模式需要有C++虚函数 纯虚函数等相关继承与多态知识 简单工厂 在简单工厂模式中,可以根据参数的不同返回不同的实例..简单工厂模式专门定义一个类来负责创建其 ...

  3. 工厂模式之简单工厂、工厂方法、抽象工厂分析对比

    工厂模式有三种分类,简单工厂(也叫静态工厂).工厂方法模式.抽象工厂 一.简单工厂 简单工厂通俗的说就是提供一个类,这个类中的某个方法根据入参的不同来创建并返回实现了同一个接口的不同具体子类(产品). ...

  4. 设计模式-工厂模式 Factory Pattern(简单工厂、工厂方法、抽象工厂)

    工厂模式 Factory Pattern(简单工厂.工厂方法.抽象工厂) 工厂模式-创建型模式-提供了创建对象的最佳方式. 在工厂模式中,创建对象时不会对客户端暴露创建逻辑,并且是通过一个共同的接口来 ...

  5. 【设计模式实战】简单工厂、工厂方法、抽象工厂:原理篇

    小明开发的应用,经常要从XML或者Asset中读取省市区数据. 小明是这样写的: public abstract class IOHandler {/*** 添加*/public abstract v ...

  6. Android工厂设计模式(简单工厂,工厂方法,抽象工厂,BitmapFactory简单工厂分析,Retrofit抽象工厂分析)

    文章目录 创建型设计模式(简单工厂,工厂方法,抽象工厂) 一.简单工厂模式 引出简单工厂模式 二.工厂方法模式 三.抽象工厂模式 Android源码中用到的工厂模式举例 一.BitmapFactory ...

  7. 设计模式:简单工厂、工厂方法、抽象工厂之小结与区别

    简单工厂,工厂方法,抽象工厂都属于设计模式中的创建型模式.其主要功能都是帮助我们把对象的实例化部分抽取了出来,优化了系统的架构,并且增强了系统的扩展性. 本文是本人对这三种模式学习后的一个小结以及对他 ...

  8. 设计模式:工厂方法与抽象工厂模式

    说明:这篇blog写的很好,有助于理解工厂方法与抽象工厂模式的联系与区别. 原文链接:http://blog.csdn.net/yzxz/article/details/4601152 抽象工厂模式与 ...

  9. 设计模式——简单工厂、工厂方法和抽象工厂的区别与联系

    前言 创建型模式中,常用的有工厂方法模式和抽象工厂模式,平时实践还包括简单工厂模式,虽然简单工厂模式不在23种设计模式中. 为了区分以上几种设计模式的差别,通过以下几个例子介绍这几种模式的使用场景以及 ...

  10. 【设计模式】简单工厂、工厂方法与抽象工厂的区别

    ###前言 为什么会出现工厂,工厂方法与简单工厂还有抽象工厂到底有啥区别,什么时候能用到这些呢,如果你对于这些不是很清晰,那么你可以看看小编的这篇博客! 这里所有的类图均用基本算法为例子,这样会有明显 ...

最新文章

  1. 运满满的技术架构演进之路
  2. linux防火墙怎么添加端口,手工添加Linux防火墙端口
  3. Oracle 优化相关
  4. Ubuntu18.04深度学习环境配置(简易方式)
  5. 程序员编程艺术第一~十章集锦与总结(教你如何编程)--持续更新中
  6. JAVA bean与XML互转的利器---XStream
  7. 移动端webUI框架(HTML5手机框架)
  8. centos安装jetbrains projector(解决不能复制问题)
  9. 怎样去提高效率,五步优化法
  10. 生命中最美的风景就是曾经遇见了你
  11. android的app,用java程序开发
  12. 2022年起重机司机(限门式起重机)考试题库及在线模拟考试
  13. styled-components 基本用法
  14. Linux日常维护命令
  15. android lottie字体json,从json文件到炫酷动画-Lottie实现思路和源码分析
  16. Java日期类 util.Date sql.Date Calendar LocalDateTime 格式化 DateFormat DateTimeFormatter
  17. JavaScript队列结构——击鼓传花游戏
  18. 下载和玩经典游戏的最佳网站
  19. KVM架构VPS服务器有哪些优势?
  20. Logon vs Login

热门文章

  1. 使用less实现自适应宽度
  2. Go-cron定时任务
  3. Bing每日壁纸API分享
  4. 分布式事务两阶段提交
  5. 在Windows 7上安装Team Foundation Server(TFS)的代理服务器(Agent)
  6. 89C52控制1602A液晶的计时器
  7. HDU 1033 水题
  8. 为脚本语言平反-JavaScript篇(3)
  9. Windows 7硬盘安装方法大全
  10. PyTorch 之 requires_grad,requires_grad_(),grad_fn