抽象工厂模式(Abstract Factory Pattern)是工厂方法模式的进一步抽象,其英文原话"Provide an interface for creating families of related or dependent objects without specifying their concrete classes",翻译,“为创建一组相关或相互依赖的对象提供一个借口,无需指定它们的详细类”。抽象工厂模式一般是用于创一族产品,而且这族产品分不同的等级;不同的详细工厂类生产不同等级的一族产品。抽象工厂模式也有四种角色:抽象工厂、详细工厂、抽象产品和详细产品,详细解释參见“Java
工厂方法模式”一文。抽象工厂模式的类图例如以下:
能够看到产品族包含ProductA和ProductB两种产品,每一个详细工厂都能生产这两种产品,仅仅是ConcreteFactory1生产的等级为1的族产品;ConcreteFactory2生产的是等级为2的族产品。以下以上图为模型,写一个demo,測试抽象工厂模式。
抽象工厂:AbstractFactory接口
//抽象工厂,定义了生产族产品的方法;
public interface AbstractFactory {
public ProductA factoryA();
public ProductB factoryB();
}