JDK设计模式(二)工厂模式

工厂模式是我们最常用的实例化对象模式,使用工厂方法代替 new 操作的一种模式,使用工厂模式,可能多做一些工作,但会给你系统带来更大的可扩展性和尽量少的修改量。

1、简单工厂模式

简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于 23 种 GOF 设计模式之一。
简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。
image.png
简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。
使用场景
1、工厂类负责创建的对象比较少;
2、客户只知道传入工厂类的参数,对于如何创建对象(逻辑)不关心;
3、由于简单工厂很容易违反高内聚责任分配原则,因此一般只在很简单的情况下应用。
JDK 中使用的简单工厂
代替构造函数创建对象,方法名比构造函数清晰
如 Integer.valueOf,Class.forName 等方法

2、工厂方法模式

工厂方法模式定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法把类的实例化推迟到子类。
image.png
JDK 中使用的工厂方法
image.png
如上图所示,ArrayList 和 LinkedList 使用具体的工厂类的 iterator 方法,分别创建实现 Iterator 接口类的 ArrayList$Itr和ArrayList$ListItr,以及 LinkedList$ListItr 的具体产品类。

3、抽象工厂模式

抽象工厂模式提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。
抽象工厂允许客户使用抽象的接口来创建一组相关的产品,而不需要知道(或关心)实际产出的具体产品是什么。这样一来,客户就从具体的产品中被解耦。
抽象工厂的方法经常以工厂方法的方式实现,抽象工厂的任务是定义一个负责创建一组产品的接口。这个接口内的每个方法都负责创建一个具体产品,
同时利用实现抽象工厂的子类来提供这些具体的做法,所以在抽象工厂中利用工厂实现生产方法是相当自然在做法。
image.png
JDK 中使用的抽象工厂
image.png

总结

1、 所有的工厂都是用来封装对象的创建。
2、 简单工厂,虽然不是真正的设计模式,但仍不失为一个简单的方法,可以将客户程序从具体类解耦。
3、 工厂方法,使用继承,把对象的创建委托给子类,由子类来实现工厂方法来创建对象。
4、 抽象工厂,使用对象组合,对象的创建被实现在工厂接口所暴露出来的方法中。

https://alicharles.oss-cn-hangzhou.aliyuncs.com/static/images/mp_qrcode.jpg
文章目录
  1. 1、简单工厂模式
  2. 2、工厂方法模式
  3. 3、抽象工厂模式
  4. 总结