首页 > 试题广场 >

说说设计模式中抽象工厂和工厂方法区别

[问答题]

说说设计模式中抽象工厂和工厂方法区别

  • 简单工厂:唯一工厂类,一个产品抽象类,工厂类的创建方法依据入参判断并创建具体产品对象。
  • 工厂方法:多个工厂类,一个产品抽象类,利用多态创建不同的产品对象,避免了大量的if-else判断。
  • 抽象工厂:多个工厂类,多个产品抽象类,产品子类分组,同一个工厂实现类创建同组中的不同产品,减少了工厂子类的数量。


在下述情况下可以考虑使用工厂模式:


  1. 在编码时不能预见需要创建哪种类的实例。
  2. 系统不应依赖于产品类实例如何被创建、组合和表达的细节。


总之,工厂模式就是为了方便创建同一接口定义的具有复杂参数和初始化步骤的不同对象。工厂模式一般用来创建复杂对象。只需用new就可以创建成功的简单对象,无需使用工厂模式,否则会增加系统的复杂度。


此外,如果对象的参数是不固定的,推荐使用Builder模式。


作者:阿里巴巴淘系技术
链接:https://www.zhihu.com/question/27125796/answer/1615074467
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
发表于 2021-09-06 15:10:01 回复(0)
工厂方法 :用来生产同一等级结构中的固定产品。(支持增加任意产品)   
抽象工厂 :用来生产不同产品族的全部产品。(对于增加新的产品,无能为力;支持增加产品族)  
发表于 2017-02-05 17:17:50 回复(1)