一、什么是抽象工厂模式?
定义:抽象工厂模式(Abstract Factory),提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类
当每个抽象产品都有多于一个的具体子类的时候,工厂角色怎么知道实例化哪一个子类呢?比如每个抽象产品角色都有两个具体产品。抽象工厂模式提供两个具体工厂角色,分别对应于这两个具体产品角色,每一个具体工厂角色只负责某一个产品角色的实例化。每一个具体工厂类只负责创建抽象产品的某一个具体子类的实例。
每一个模式都是针对一定问题的解决方案,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式针对的是多个产品等级结构。
二、抽象工厂模式UML图
三、抽象工厂模式JAVA版
AbstractFactory.java
package com.amosli.dp.build.abstractfactory;
public abstract class AbstractFactory {
public abstract AbstractProductA createProductA();
public abstract AbstractProductB createProductB();
}
AbstractProductA.java
package com.amosli.dp.build.abstractfactory;
public abstract class AbstractProductA {
public abstract void show();
}
AbstractProductB.java
package com.amosli.dp.build.abstractfactory;
public abstract class AbstractProductB {
public abstract void display();
}
Factory1.java
package com.amosli.dp.build.abstractfactory;
public class Factory1 extends AbstractFactory{
@Override
public AbstractProductA createProductA() {
return new ProductA1();
}
@Override
public AbstractProductB createProductB() {
return new ProductB1();
}
}
Factory2.java 与Factory1.java类似 这里就不再列出来了。
ProductA1.java
package com.amosli.dp.build.abstractfactory;
public class ProductA1 extends AbstractProductA{
@Override
public void show() {
System.out.println("a1");
}
}
ProductA2.java ProductB1.java ProductB2.java与ProductA1.java类似