Java语言抽象工厂创立性模式介绍2010-12-17工厂模式有简单工厂模式,工厂方法模式和抽象工厂模式几种形态。其中简单 工厂模式和工厂方法模式已经在前面作过介绍。在这里,我们来介绍抽象工厂模 式。抽象工厂模式是所有形态的工厂模式中最为抽象和最具广泛性的一种形态。抽象工厂模式的定义抽象工厂模式是工厂方法模式的进一步扩广化和抽象化。我们给出抽象工厂 模式的类图定义如下。

图1. 抽象工厂模式的类图定义从上图可以看出,简单工厂模式涉及到以下的角色抽象工厂(AbstractFactory)类或接口担任这个角色的是工厂方法模式的核心,它是与应用程序无关的。任何在模 式中创立对象的工厂类必须实现这个接口,或继承这个类。实工厂类 (Conrete Factory)担任这个角色的是与应用程序紧密相关的,直接在应用程序调用下,创立产 品实例的那样一些类。抽象产品 (Abstract Product)担任这个角色的类是工厂方法模式所创立的对象的父类,或它们共同拥有的 接口。实产品 (Concrete Product)担任这个角色的类是工厂方法模式所创立的任何对象所属的类。怎么这个类图和工厂方法模式的类图看起来是一样的?是的,图是一样的,但是含义有很大的不同。必须指出,在抽象工厂模式中 ,抽象产品 (AbstractProduct) 可能是一个或多个,从而构成一个或多个产品 族(Product Family)。 在只有一个产品族的情况下,抽象工厂模式实际上退化 到工厂方法模式。在上面的类图中,只给出了一个产品族,相当于位图中的一个 点,而完整的位图应当是三维的,如下图。

图2. 抽象工厂模式的位图