科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道HeadFirst采访“工厂方法”和“抽象工厂”

HeadFirst采访“工厂方法”和“抽象工厂”

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

第四章的后面有段HeadFirst采访工厂模式中的工厂方法模式及抽象工厂模式,感觉对理解这两种模式很有帮助,大概的翻译了采访内容跟大家分享下~~

作者:gaolin_bei 来源:CSDN 2008年2月27日

关键字: java 工厂方法 HeadFirst

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共2页)

HeadFirst:哦,我明白了,你提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。

 Abstract Factory:对。

 HeadFirst:那如果说你要扩充这组相关或相互依赖的产品,也就是说增加另外一个成员呢?那样的话就必须改变你的接口了啊?

 Abstract Factory:确实是这样,如果新的产品加进来了,我的接口必须改变,我知道人们都不喜欢这样做。。。

 Factory Method:(窃笑)。。。

 Abstract Factory:工厂方法,你在窃笑什么呢?

 Factory Method:哦~~快快行动吧,那可是重要的事啊!改变你的接口那就意味着你必须深入到所以实现了这个接口的子类,然后挨个改变!这看起来可有很多事情要做啊。

 Abstract Factory:是的,但是我有一个相对来说范围比较大的接口因为我习惯了从一开始就产生整个产品族。你只是生成一个产品,所以你不须要有一个大的接口,只需在你的抽象类里定义一个这样的方法就行了。

  HeadFirst:抽象工厂,我听说你经常用一些factory method来实现你的具体工厂类。

 Abstract Factory:嗯,这点我承认。我的那些具体工厂通常实现一个工厂方法来产生他们的具体产品。照我的情况来看,他们现在已经完全习惯产生产品。。。

 Factory Method:。。。而按我的情况来看我通常在抽象生产者(角色,抽象类)里实现一部分代码来利用那些子类所产生的具体类(大概是说抽象的工厂类里,这是一个抽象类,不是接口的情况下,有一部分方法不是工厂方法,这些方法是留给那些所有子类用的,因为这是他们所共有的属性或行为)

 HeadFirst:听起来你们俩都很擅长各自的工作。我肯定人们喜欢有一个选择的;毕竟,工厂是如此的有用,他们会在各种情况下恰当地使用工厂模式。你们都封装了具体对象的产生过程从而达到应用程序的松耦合而且不依赖于具体的实现,这是相当重要地啊,无论是使用工厂方法还是使用抽象工厂。在最后请你们分别说几句想说的话。

   Abstract Factory:谢谢,请记住我,抽象工厂,在下面情况下请记住及时使用我:         

  • 一个系统要独立于它的产品的创建、组合和表示时。
  • 一个系统要由多个产品系列中的一个来配置时。
  • 当你要强调一系列相关的产品对象的设计以便进行联合使用时。
  • 当你提供一个产品类库,而只想显示它们的接口而不是实现时。

     Factory Method:我是工厂方法,遇到下面情况,不要犹豫地使用我: 

  • 当一个类不知道它所必须创建的对象的类的时候。
  • 当一个类希望由它的子类来指定它所创建的对象的时候。
  • 当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信 息局部化的时候。
      • 评论
      • 分享微博
      • 分享邮件
      邮件订阅

      如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

      重磅专题
      往期文章
      最新文章