介绍
抽象工厂的定义为:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。
抽象工厂模式仅仅是工厂方法模式的加强版,使用场景就是创建的对象比较复杂,需要多个对象组合。好比机器人生产线,需要生产四肢,躯干,大脑等其它工厂实例组合一起使用,从而生产出一个完整的机器人,当然交付给客户使用的时候,客户压根不管也不知道你这个机器人是如何生产出来的,只要能按照需求正常使用即可。
使用方式
abstract public class ProductA {
abstract public void doSomething();
}
public class ConcreteProductA extends ProductA {
public void doSomething()
{
System.out.println("ProductA doSomething()");
}
}
abstract public class FactoryA {
abstract public ProductA createProduct();
}
public class ConcreteFactoryA extends FactoryA {
@Override
public ProductA createProduct() {
return new ConcreteProductA();
}
}
abstract public class ProductB {
abstract public void doSomething();
}
public class ConcreteProductB extends ProductB {
public void doSomething()
{
System.out.println("ProductB doSomething()");
}
}
abstract public class FactoryB {
abstract public ProductB createProduct();
}
public class ConcreteFactoryB extends FactoryB {
@Override
public ProductB createProduct() {
return new ConcreteProductB();
}
}
public class ProductFinal {
private ProductA mProductA;
private ProductB mProductB;
public ProductFinal()
{
mProductA = new ConcreteFactoryA().createProduct();
mProductB = new ConcreteFactoryB().createProduct();
}
public void doSomething()
{
}
}
public class Client {
public ProductFinal createProductFinal()
{
return new ProductFinal();
}
}
public class Main {
public static void main(String[] args) throws Exception {
Client client = new Client();
ProductFinal productFinal = client.createProductFinal();
productFinal.doSomething();
}
}
以上只是个非常简单的轮廓代码,真正使用到抽象工厂模式的地方代码绝对不简单,简单的也没必要用抽象工厂模式。