CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  架构、设计

工厂模式讨论

楼主Times2001(回车)2006-03-06 09:59:38 在 Java / 架构、设计 提问

在《java与模式》书中提到工厂模式又分简单工厂模式,工厂方法模式,抽象工厂模式,欢迎各位讨论这三种模式的区别与用法。 问题点数:100、回复次数:13Top

1 楼doway(john)回复于 2006-03-06 10:25:42 得分 20

Calendar.getInstance()   这是工厂方法,与其他两种模式不是一种类型。  
   
  简单工厂和抽象工厂是一种类型,都用于创建其他组件。简单工厂只有一种实现,而抽象工厂可能有多个工厂的不同实现。  
   
  比如:针对一种数据库时,用简单工厂就可以了,支持多种数据库是,就应该使用抽象工厂了。  
  Top

2 楼yyfhz(火山)回复于 2006-03-06 11:59:27 得分 20

个人理解:  
  如果有个汽车工厂Factory,输入参数"小汽车",就生产小汽车;输入"卡车"就生产卡车,这叫工厂。  
   
  如果有个工厂,但是你不知道它是生产汽车的还是生产电视机的,需要你根据实际情况进行进一步的具体说明,也就是说你只知道有个工厂,但不知道它到底是干什么的,这叫抽象工厂。  
   
  想像一下造一辆汽车,我们需要获得所有的基本构件(如车厢,轮子,窗户...),这叫工厂;然后将它们按照图纸的说明组装起来,这叫方法;组合起来就是工厂方法。例如用同样的构件,换一份图纸,出来的可能就是拖拉机;而用同样的图纸不同的构件造出来的东西可能也是不同的(记得007里面有个家伙用黄金造了辆汽车,真BT^_^)  
  Top

3 楼shazi_pig(傻子)回复于 2006-03-06 12:51:25 得分 15

让创建实例所需要的大量初始化工作从的构造函数中分离出去这就是工厂模式。  
   
  工厂模式的目的就是,把创建对象的责任和使用对象的责任分开,工厂负责统一创建具体产品(苹果、葡萄和草莓),然后再把这些产品转化为他们的抽象产品(水果)返回给外部使用者,作为使用者关心的仅仅是抽象产品预留的接口,而不关心他们是怎么创建的。这样,即使因为某些原因导致创建产品的过程发生变化,也不会影响到外部使用者,在一定程度上保证了程序的可维护性。    
  Top

4 楼Times2001(回车)回复于 2006-03-08 16:24:59 得分 0

个人觉得用工厂方法模式,可以代替简单工厂模式和抽象工厂模式,特别是抽象工厂模式,没什么存在的必要。  
  大家发表一下各自的看法吧Top

5 楼Times2001(回车)回复于 2006-03-10 09:52:20 得分 0

upTop

6 楼chg2008(岂能尽如人意,但求无愧我心!)回复于 2006-03-10 09:54:31 得分 10

路过。学习Top

7 楼Times2001(回车)回复于 2006-03-14 09:54:32 得分 0

following   is   my   explain:  
  simple   factory   pattern:   I   would   like   to   call   it   "static   factory   pattern".this   pattern   is   a   variation   of   Factory   pattern,   its   speciality   is   that   it   is   a   factory   in   which   known   products   can   be   created,   and   its   structure   is   simple.example:  
   
  public   class   FactorySimple{  
  public   static   Product   createProductA(){//create   A}  
  public   static   Product   createProductB(){//create   B}  
  public   static   Product   createProductC(){//create   C}  
  }  
   
  in   FactorySimple,   factory   can   create   A,   B   or   C,   but   can't   create   others.   this   pattern   make   the   factory   is   close,   ensure   nothing   else   to   be   create.   it   is   necessary   in   some   situation.  
  Top

8 楼Times2001(回车)回复于 2006-03-14 10:13:16 得分 0

factory   method   pattern:   this   is   a   good   pattern,   it   use   a   method   to   create   "product".   the   number   of   "products"   created   by   this   method,   can   be   limited,   and   can   be   infinite.   in   this   method,   you   can   used   Class.forName(),   for   example:  
  public   class   FactoryMethodClass{  
  //other   method   can   be   here  
  //defalt  
  public   static   Product   createProduct(){//create   default   product}  
  //Factory   method   that   can   create   a   lot   of   product  
  public   static   Product   createProduct(String   classname){  
  try{  
        Product   productObject=(Product)forName(classname).newInstance();  
        }catch(Exception   e){  
        System.out.println(e.toString());  
        }  
  return   productObject;  
  }  
  }Top

9 楼Times2001(回车)回复于 2006-03-14 10:15:06 得分 0

abstract   factory   pattern:Top

10 楼cleansunshing(努力学习中)回复于 2006-03-14 17:47:25 得分 10

学习Top

11 楼WiseDragon(慧龙)回复于 2006-03-14 18:18:06 得分 15

个人理解:  
   
      工厂方法模式:只会生产单一产品;(好比一个专心做一行的企业)  
                  如一个轮胎厂他会生产轿车轮胎,客车轮胎,货车轮胎等,一系列各种型号的轮胎  
   
      抽象工厂模式:会生产同一产品族的产品(好比一个有实力的工厂)  
                  如一个轿车工厂   他会生产   轿车轮胎,   轿车发动机,等   轿车的一系列产品  
   
  个人愚见,请多指正Top

12 楼cqm2099(~人生小弟~)回复于 2006-03-14 19:01:33 得分 10

upTop

13 楼Times2001(回车)回复于 2006-03-15 09:32:50 得分 0

这些工厂模式无非是希望在client端用的时候,方便编码和维护,  
  但感觉抽象工厂并不好用,因为工厂也是多层多个的,好像我要找个厂子做个大号的鞋,首先我要找到nike的总部,nike总部说这事交给亚太地区做就好了,我就要去亚太地区的nike取得联系,最后亚太的老总也把我交给了什么马来西亚的什么地方,最后我才拿到我想要的鞋.这过程好像很麻烦,有没有人能举个例子,说明一下抽象工厂应用时的技巧.Top

相关问题

  • 讨论贴~就工厂模式(希望大家发表自己的意见)
  • 设计模式的高手请进,正在学习的朋友也来--系列模式答案求解讨论之简单工厂模式
  • 设计模式的高手请进,正在学习的朋友也来--系列模式答案求解讨论之工厂模式
  • 啥是工厂模式咯
  • 郁闷的工厂模式
  • 简单工厂模式
  • 简单工厂模式
  • 设计模式的讨论
  • 讨论facade设计模式。
  • 讨论:模式、框架

关键词

  • 模式
  • 工厂
  • 抽象
  • 创建
  • 构件
  • factory
  • 图纸
  • 使用者
  • pattern
  • 简单

得分解答快速导航

  • 帖主:Times2001
  • doway
  • yyfhz
  • shazi_pig
  • chg2008
  • cleansunshing
  • WiseDragon
  • cqm2099

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo