简单工厂、工厂、抽象工厂的区别

原创 2007年10月01日 14:08:00

工厂方法模式的核心是一个抽象工厂类,而简单工厂模式把核心放到了一个具体类上.  
 
简单工厂是工厂方法模式的特例。  
工厂方法模式和抽象工厂模式的最主要的区别在于对工厂的抽象程度上。  
抽象工厂模式中一般是抽象出工厂接口,表示他就是一个工厂,而不管它是制造什么产品的工厂,他的抽象程度较高。  
而工厂方法模式的抽象工厂一般是针对于产品进行抽象,表示它是一个生产某类产品的工厂。  
 
简单工厂是不支持继承的,如果需要建立的对象过多,会使这个类变大,建立偶合性集中在这个类上.  
工厂方法解决了简单工厂不支持继承的缺点.  
以上两个模式所建立的对象是在一个等级结构中.  
抽象工厂是面向多个平行等级结构的,其建立对象的原则是以簇(功能相似的对象)为单位划分需要建立的对象.

 

简单工厂 工厂方法 抽象工厂 使用方法与区别

简单工厂:是由一个工厂对象决定创建出哪一种产品类的实例。 A实例调用B实例的方法,称为A依赖于B。如果使用new关键字来创建一个B实例(硬编码耦合),然后调用B实例的方法。一旦系统需要重构:需要使用...
  • lqw05
  • lqw05
  • 2016年07月14日 15:04
  • 2351

简单工厂、工厂方法与抽象工厂大比拼

简单工厂、工厂方法和抽象工厂都属于设计模式创建型,严格意义上简单工厂不属于23设计模式之一(违背了开闭原则),本文为了完整描述三工厂演变过程,对三工厂进行了整体的总结和学习,并通过三者之间的特点比较总...
  • u010097777
  • u010097777
  • 2015年08月20日 18:37
  • 1473

简单工厂模式、工厂方法模式、抽象工厂模式 之间的对比

简单工厂模式、工厂方法模式、抽象工厂模式 之间的对比
  • u013761036
  • u013761036
  • 2016年06月23日 20:10
  • 1028

创建模式之工厂、工厂方法、抽象工厂与建造者(builder)

ref:http://redsnow-fenglin.iteye.com/blog/691868 由于博文仅倾向于模式的理解与相似模式间关系,所以,博文可能会以某类模式一起论述的形式出现。这些主要是...
  • booooooooooooooooooo
  • booooooooooooooooooo
  • 2013年04月30日 19:15
  • 1051

设计模式:浅析 抽象工厂、工厂方法、简单(静态)工厂 java实现

抽象工厂 抽象工厂:多个抽象产品类,派生出多个具体产品类;一个抽象工厂类,派生出多个具体工厂类;每个具体工厂类可创建多个具体产品类的实例。 即提供一个创建一系列相关或相互依赖对象的接口...
  • df1012890048
  • df1012890048
  • 2014年08月19日 01:24
  • 1390

浅谈Java设计模式——单实例、简单工厂、抽象工厂、观察者

最近的项目里面涉及到一些Java设计模式,在此简单谈一下自己的看法,以下实例一部分参考同行,大部分自己设计。1.单例模式 如果一个类始终只能创建一个实例,则这个类成为单例类,这种设计模式...
  • Princeliu999
  • Princeliu999
  • 2017年08月06日 11:46
  • 648

设计模式之静态工厂、工厂方法和抽象工厂的联系与区别

解析: 开闭原则:对扩展开放,对修改封闭。静态工厂增加需要是修改源代码,对修改不封闭,不符合开闭原则。...
  • sinat_35512245
  • sinat_35512245
  • 2017年02月06日 11:31
  • 2208

简单工厂模式+反射来改进抽象工厂模式

抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需制定它们具体的类 用抽象工厂模式来实现数据库访问访问程序作为例子 UML图形 产品抽象类:产品有可能有许多不同的实现 具体...
  • lypf19900912
  • lypf19900912
  • 2013年03月17日 09:54
  • 4143

结合Java反射用简单工厂模式改进抽象工厂模式

前一篇简单介绍了抽象工厂模式,结合Java的反射机制,可以用简单工厂模式来改进抽象工厂模式,减少类的数量,增加可维护性。UML图如下: 去除IFactory、SqlserverFacto...
  • sdauzxl
  • sdauzxl
  • 2016年08月20日 12:01
  • 1006

简单工厂,工厂, 抽象工厂区别

public class SimplyFactory { /** * 静态工厂方法 */ public static Prouct factory(String which) throw N...
  • BlueMood1986
  • BlueMood1986
  • 2011年11月16日 11:55
  • 372
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:简单工厂、工厂、抽象工厂的区别
举报原因:
原因补充:

(最多只允许输入30个字)