- 首先定义一个抽象工厂接口,声明创建抽象产品的方法。
public interface AbstractFactory {
public AbstractProductA createProductA();
public AbstractProductB createProductB();
}
2. 为每个产品族创建具体工厂类,每个具体工厂类实现创建该族产品的方法。
public class ConcreteFactory1 implements AbstractFactory {
public AbstractProductA createProductA() {
return new ConcreteProductA1();
}
public AbstractProductB createProductB() {
return new ConcreteProductB1();
}
}
public class ConcreteFactory2 implements AbstractFactory {
public AbstractProductA createProductA() {
return new ConcreteProductA2();
}
public AbstractProductB createProductB() {
return new ConcreteProductB2();
}
}
- 定义一个抽象产品接口,声明具体产品必须实现的方法。
public interface AbstractProductA {
public void operationA();
}
public interface AbstractProductB {
public void operationB();
}
- 为每个产品族创建具体产品类,每个具体产品类实现抽象产品接口中声明的方法。
public class ConcreteProductA1 implements AbstractProductA {
public void operationA() {
System.out.println("ConcreteProductA1.operationA()");
}
}
public class ConcreteProductB1 implements AbstractProductB {
public void operationB() {
System.out.println("ConcreteProductB1.operationB()");
}
}
public class ConcreteProductA2 implements AbstractProductA {
public void operationA() {
System.out.println("ConcreteProductA2.operationA()");
}
}
public class ConcreteProductB2 implements AbstractProductB {
public void operationB() {
System.out.println("ConcreteProductB2.operationB()");
}
}
- 在客户端代码中,创建所需产品族的具体工厂实例,然后使用该工厂创建该族的产品。
AbstractFactory factory1 = new ConcreteFactory1();
AbstractProductA productA1 = factory1.createProductA();
AbstractProduct