抽象工厂使用对象组合,对象的创建被实现在工厂接口所暴露出来的方法中;
抽象工厂用来创建整个产品家族和将制造的相关产品集合起来,故当要改变产品时(新增,修改)就必须改变接口,抽象工厂中的产品经常会用工厂方法实现。
抽象工厂模式的结构如下:
//产品接口
public interface AbstractFactoryInterface1 {
}
public interface AbstractFactoryInterface2 {
}
//产品具体实现类
public class FactoryA1 implements AbstractFactoryInterface1 {
public FactoryA1() {
System.out.println(“FactoryA1”);
}
}
public class FactoryA2 implements AbstractFactoryInterface1 {
public FactoryA2() {
System.out.println(“FactoryA2”);
}
}
public class FactoryB1 implements AbstractFactoryInterface2 {
public FactoryB1() {
System.out.println(“FactoryB1”);
}
}
public class FactoryB2 implements AbstractFactoryInterface2 {
public FactoryB2() {
System.out.println(“FactoryB2”);
}
}
//抽象工厂方法接口
public interface AbstractFactory {
public AbstractFactoryInterface1 createFactoryA();
public AbstractFactoryInterface2 createFactoryB();
}
//抽象工厂方法具体实现类
public class ConcreteFactory1 implements AbstractFactory {
public AbstractFactoryInterface1 createFactoryA(){
return new FactoryA1();
}
public AbstractFactoryInterface2 createFactoryB() {
return new FactoryB1();
}
}
public class ConcreteFactory2 implements AbstractFactory {
public AbstractFactoryInterface1 createFactoryA(){
return new FactoryA2();
}
public AbstractFactoryInterface2 createFactoryB() {
return new FactoryB2();
}
}
//客户端的调用
public class Client {
public static void main(String [] args) {
AbstractFactory f1 = new ConcreteFactory1();
AbstractFactoryInterface1 a1 = f1. createFactoryA();
AbstractFactoryInterface2 b1 = f1. createFactoryB();
AbstractFactory f2 = new ConcreteFactory2();
AbstractFactoryInterface1 a2 = f1. createFactoryA();
AbstractFactoryInterface2 b2 = f1. createFactoryB();
}
}