Java23种设计模式探究之(抽象工厂模式)

说在前面的话

在上一篇文中介绍工厂模式时其实已经提到过抽象工厂模式。在此先回顾一下:

简单工厂模式就没什么好说的了,无非是所有的东西都写在一个类里面,要什么就调用什么,如果要添加新的方法也是到这类里面添加,代码很多,看起来也是很乱,就像一个大工厂,什么都在里面。扩展性很低。

而工厂方法模式,把说明的理论和生产的东西就分开一点。抽象工厂模式是工厂方法模式的升级。说简单点,后面两种工厂模式都是java三大特征的继承和多态的具体表现,你从后面的类图中就可以很简单看到继承(接口为实现)的关系,而你在代码中就很容易看到多态的使用。 

抽象工厂模式

简介: 为创建一组相关或相互依赖的对象提供一个接口,而且无需指定它们的具体类。用来生产不同产品族的全部产品(对于增加新的产品,无能为力。可增加一系列的产品族)。 抽象工厂模式用来生产不同产品族的全部产品,对于只增加产品某一部分则不适用。抽象工厂的接口类是能创建多个相关的对象,而工厂方法的接口类是只创建一个对象。抽象工厂模式是工厂模式的一种升级版本。
特点:
1 系统独立于它的产品创建、组合和表示。即无需关心内部对象时如何创建的,怎么创建的,什么含义。
2 系统需要多个产品组合中的一个配置。由于对象很多,能够组合出的组合非常多,而系统只是使用某一个组合。3 强调的对象的组合结果,而不是他们具体的接口和实现。
实例:
例如:生产汽车,抽象工厂模式可以生产高端汽车全部配件来组成一个高端汽车,低端汽车全部配件来组成要给低端的汽车,但是不能产生一个高端的发动机和一个低端的座椅来组成一个中等的汽车。这样会混乱。

代码实现

A、首先使用一个接口来定义一个发动机,使用具体的类来定义发动机的好坏(具体实现)

Java23种设计模式探究之(抽象工厂模式)_第1张图片

B、定义一个汽车总工厂,用来生产各种类型的汽车。所有的汽车都需要依赖此工厂来生产汽车。

Java23种设计模式探究之(抽象工厂模式)_第2张图片

C、然后根据生产的不同产品,來创建具体的实现来生产汽车。例如:专门生产高端的汽车,专门生产低端的汽车。都可以用针对CarFactory具体的实现来创建。

Java23种设计模式探究之(抽象工厂模式)_第3张图片
Java23种设计模式探究之(抽象工厂模式)_第4张图片

D、具体生产汽车的时候就可以根据需要来创建具体的汽车了。

Java23种设计模式探究之(抽象工厂模式)_第5张图片

以上就是一个针对产品族的工厂,用来生产一个产品,而不是一个配件。假如以后想生产一个中端汽车产品。就可以增加相应的类,实现汽车总工厂CarFactory来生产。

工厂模式要点

简单工厂模式(静态工厂模式):
虽然某种程度不符合面向对象规则(不符合开闭原则,每次新增内容都需要在原有代码上修改),但是实际使用最多。
工厂方法模式 :
不修改已有类的前提下,通过增加新类来实现扩展。
抽象工厂模式 :
不可以增加产品中某一个配件,可以增加一个具体的产品族。


原文连接:工厂模式

你可能感兴趣的:(Java23种设计模式探究之(抽象工厂模式))