「设计模式」工厂模式总结

「设计模式」工厂模式总结

文章目录

  • 「设计模式」工厂模式总结
    • 一、分类
    • 二、创建型模式
    • 三、工厂模式的优点
    • 四、三种工厂模式之间的演化与区别
    • 参考资料

在本专题的前几篇文章中介绍了简单工厂模式、工厂方法模式以及抽象工厂模式。本文将会在前面几篇文章的基础上,总结下三种工厂模式的区别及联系。一方面是回顾下之前的内容,另外一方面是再次加深对工厂模式的理解。


一、分类

  • 简单工厂 : 用来生产同一等级结构中的任意产品。(对于增加新的产品,主要是新增产品,就要修改工厂类。符合单一职责原则。不符合开放-封闭原则)
  • 工厂方法 :用来生产同一等级结构中的固定产品。(支持增加任意产品,新增产品时不需要更改已有的工厂,需要增加该产品对应的工厂。符合单一职责原则、符合开放-封闭原则。但是引入了复杂性)
  • 抽象工厂 :用来生产不同产品族的全部产品。(增加新产品时,需要修改工厂,增加产品族时,需要增加工厂。符合单一职责原则,部分符合开放-封闭原则,降低了复杂性)

工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。

分类 内容
简单工厂模式 (静态工厂模式) 虽然某种程度上不符合设计原则,但实际使用最多
工厂方法模式 满足开闭原则,不修改已有类的前提下,通过增加新的工厂实现扩展
抽象工厂模式 不可以增加新产品,可以增加产品族
应用场景 1.JDK的Calendar中getInstance方法 2.JDBC中Connection对象的获取 3.Spring中IOC容器创建管理bean对象 4.反射中Class对象的newInstance方法

这三种模式从上到下逐步抽象,并且更具一般性。

GOF在《设计模式》一书中将工厂模式分为两类:工厂方法模式(Factory Method)与抽象工厂模式(Abstract Factory)。

简单工厂模式(Simple Factory)看为工厂方法模式的一种特例,两者归为一类。


二、创建型模式

前面介绍过的三种工厂模式在设计模式的分类中都属于创建型模式。

创建型模式(Creational Pattern)对类的实例化过程进行了抽象,能够将软件模块中对象的创建和对象的使用分离。为了使软件的结构更加清晰,外界对于这些对象只需要知道它们共同的接口,而不清楚其具体的实现细节,使整个系统的设计更加符合单一职责原则。

创建型模式在创建什么(What),由谁创建(Who),何时创建(When)等方面都为软件设计者提供了尽可能大的灵活性。创建型模式隐藏了类的实例的创建细节,通过隐藏对象如何被创建和组合在一起达到使整个系统独立的目的。


三、工厂模式的优点

工厂模式是创建型模式中比较重要的。

工厂模式的主要功能就是帮助我们实例化对象的。之所以名字中包含工厂模式四个字,是因为对象的实例化过程是通过工厂实现的,是用工厂代替new操作的。

这样做的好处是封装了对象的实例化细节,尤其是对于实例化较复杂或者对象的生命周期应该集中管理的情况。会给你系统带来更大的可扩展性和尽量少的修改量。


四、三种工厂模式之间的演化与区别

「设计模式」工厂模式总结_第1张图片

  • 工厂方法模式利用继承,抽象工厂模式利用组合
  • 工厂方法模式产生一个对象,抽象工厂模式产生一族对象
  • 工厂方法模式利用子类创造对象,抽象工厂模式利用接口的实现创造对象

参考资料

Hollis

狂神说

工厂模式

JAVA设计模式之工厂模式

大话设计模式

你可能感兴趣的:(学习笔记,设计模式,设计模式,软件工程,java)