简单工厂,工厂方法,抽象工厂都属于设计模式中的创建型模式。其主要功能都是帮助我们把对象的实例化部分抽取了出来,优化了系统的架构,并且增强了系统的扩展性。

本文是本人对这三种模式学习后的一个小结以及对他们之间的区别的理解。

简单工厂

简单工厂模式的工厂类一般是使用静态方法,通过接收的参数的不同来返回不同的对象实例。

不修改代码的话,是无法扩展的。

工厂方法

工厂方法是针对每一种产品提供一个工厂类。通过不同的工厂实例来创建不同的产品实例。

在同一等级结构中,支持增加任意产品。

抽象工厂

抽象工厂是应对产品族概念的。比如说,每个汽车公司可能要同时生产轿车,货车,客车,那么每一个工厂都要有创建轿车,货车和客车的方法。

应对产品族概念而生,增加新的产品线很容易,但是无法增加新的产品。

小结

★工厂模式中,重要的是工厂类,而不是产品类。产品类可以是多种形式,多层继承或者是单个类都是可以的。但要明确的,工厂模式的接口只会返回一种类型的实例,这是在设计产品类的时候需要注意的,最好是有父类或者共同实现的接口。

★使用工厂模式,返回的实例一定是工厂创建的,而不是从其他对象中获取的。

★工厂模式返回的实例可以不是新创建的,返回由工厂创建好的实例也是可以的。

区别

简单工厂 : 用来生产同一等级结构中的任意产品。(对于增加新的产品,无能为力)

工厂方法 :用来生产同一等级结构中的固定产品。(支持增加任意产品)   
抽象工厂 :用来生产不同产品族的全部产品。(对于增加新的产品,无能为力;支持增加产品族)

以上三种工厂 方法在等级结构和产品族这两个方向上的支持程度不同。所以要根据情况考虑应该使用哪种方法。

//from: http://blog.csdn.net/superbeck/article/details/4446177

设计模式:简单工厂、工厂方法、抽象工厂之小结与区别相关推荐

  1. 详解设计模式之工厂模式(简单工厂+工厂方法+抽象工厂)

    园子里关于23种设计模式的博文已经可以说是成千上万.车载斗量.屯街塞巷.不计其数.数不胜数.摩肩接踵.汗牛充栋.车水马龙.门庭若市.琳琅满目直至让人眼花缭乱了.在这样的大环境下之所以来写设计模式类的博 ...

  2. 详解设计模式之工厂模式(简单工厂+工厂方法+抽象工厂) v阅读目录

    1楼留头头大神:http://www.cnblogs.com/toutou/p/4899388.html v阅读目录 v写在前面 v简单工厂模式 v工厂方法模式 v抽象工厂模式 v博客总结 v博客前言 ...

  3. 设计模式学习笔记——03 简单工厂 工厂方法 抽象工厂

    简单工厂 简单工厂模式也成静态工厂模式,但此模式不符合开闭原则,但仍然很常用 适用范围:工厂类需要创建的对象种类比较少,客户端只需要知道传入工厂类的参数,对于如何创建对象(逻辑)不关心 上段代码: p ...

  4. 简单工厂 工厂方法 抽象工厂

    [找到一篇好文章] 作者:海粟007 原文址:http://www.cnblogs.com/Seasky/archive/2009/04/28/1385609.html 今天开始这个系列之前,心里有些 ...

  5. 简单工厂 工厂方法 抽象工厂 如何理解

    文章目录 前言 一.简单工厂 二.工厂方法 三.抽象工厂 总结 前言 简单工厂,工厂方法,抽象工厂,三者有什么区别? 搞清楚他们有什么弊端,以发展的角度去观察,理解会更加深入. 提示:以下是本篇文章正 ...

  6. 设计模式之——简单(静态)工厂模式和抽象工厂模式

    文章目录 [关于设计模式] 设计模式的诞生 设计模式概念与解读 设计模式的原则 [关于工厂模式] 简单工厂(静态工厂)模式的概念 抽象工厂模式 工厂模式的使用时机和注意事项 给自己的思考 [关于设计模 ...

  7. java 三种工厂模式(简单工厂+工厂方法+抽象工厂)

    一.简单工厂模式 概述   简单工厂模式:定义一个工厂类,它可以根据参数的不同返回不同类的 实例,被创建的实例通常都具有共同的父类.因为在简单工厂模式中用于创建实例的方法是静态(static)方法,因 ...

  8. 简单工厂-工厂方法-抽象工厂

    目录 简单工厂 工厂方法 抽象工厂 前言 之前看书认真了解过这三种模式,但因为没有做记录,都给忘完了.现在重新分析网上的博客发现跟书里讲的不太一样,哎-.现在能做的就是把现在的理解给记录一下,若以后有 ...

  9. 【软件设计模式】工厂模式(简单工厂模式、一般工厂模式、抽象工厂模式)

    概述: 工厂模式把对象的创建交由某个特定的类来实现,该类为工厂类,该类的方法称为工厂方法,仅仅负责创建对象,从而将客户端复杂的对象创建语句实现解耦.责任分离,方便扩展和维护. 分类: 工厂模式分为简单 ...

  10. 设计模式理解:工厂模式,抽象工厂,原型方法

    工厂模式.抽象工厂.原型方法都是对象创建型模式.工厂模式的目的是利用抽象类去动态地创建对象:抽象工厂模式是利用抽象类动态地创建一系列的对象:而原型方法是通过克隆(深拷贝)地形式创建出对象 ,再去操作新 ...

最新文章

  1. android 问题汇总系列之四
  2. mysql的付费功能_MYSQL对游戏用户付费行为分析
  3. CABasicAnimation使用总结
  4. LeetCode 815. 公交路线(最少换乘,BFS)
  5. (操作系统题目题型总结)第六章:文件管理
  6. cisco engine memory
  7. C语言程序密码输入退回,想程序高手求助--用C语言来编辑一个输入密码的程序...
  8. [转]asp导入excel数据到sql 2000
  9. 做java前端需要学习哪些知识,2022最新
  10. Matlab遗传算法工具箱的使用
  11. 网页版进销存2.0-部署手册(windows版)
  12. Android安全论文汇集
  13. notepad++更换皮肤
  14. 钉钉创建单人群、双人群及钉钉自定义机器人的初步使用(附python3代码)
  15. 解决图片旋转之后的位置问题
  16. 图片太普通,教你轻松制作画中画特效
  17. 提高网络营销的转化只需掌握这四步
  18. win7电脑怎么连接打印机的方法分享
  19. android获取网络图片方法,Android获取网络图片并显示的方法
  20. C语言源代码系列-管理系统之会员计费系统

热门文章

  1. 【DSP开发】C6000非多核非KeyStone系列DSP中断系统
  2. iOS开发UI篇—transframe属性(形变)
  3. EBS fnd_global.apps_initialize
  4. 逻辑回归算法原理简介
  5. computed set 自定义参数_完全理解Vue的渲染watcher、computed和user watcher
  6. tcp udp区别优缺点_CCNA必懂篇,传输层协议TCP/UDP的区别和作用
  7. linux qt 连接sqlite3,RedHat 9 Linux下在QT3.1中连接SQLite3全过程详细记录
  8. android window 大小,android popupWindow 中宽度莫名很大,求帮助?
  9. flux java_FluxJava 新增 RxJava2 的支援功能
  10. html更改灰色按钮可用,点击提交按钮后按钮变灰色不可用状态的三种方法