public abstract class AbstractProductA {
public void commonMethod(){}
public abstract void doSomething();
}
public class ProductA1 extends AbstractProductA{
public void doSomething(){
System.out.println(
"产品A1的实现方法");
}
}
public class ProductA2 extends AbstractProductA{
public void doSomething(){
System.out.println(
"产品A2的实现方法");
}
}
public abstract class AbstractProductB {
public void commonMethod(){}
public abstract void doSomething();
}
public class ProductB1 extends AbstractProductB{
public void doSomething(){
System.out.println(
"产品B1的实现方法");
}
}
public class ProductB2 extends AbstractProductB{
public void doSomething(){
System.out.println(
"产品B2的实现方法");
}
}
public abstract class AbstractFactory {
public abstract AbstractProductA
createProductA();
public abstract AbstractProductB
createProductB();
}
public class Factory1 extends AbstractFactory{
public AbstractProductA
createProductA() {
return new ProductA1();
}
public AbstractProductB
createProductB() {
return new ProductB1();
}
}
public class Factory2 extends AbstractFactory{
public AbstractProductA
createProductA() {
return new ProductA2();
}
public AbstractProductB
createProductB() {
return new ProductB2();
}
}
public class Main {
public static void main(String[] args) {
AbstractFactory factory1 =
new Factory1();
AbstractFactory factory2 =
new Factory2();
AbstractProductA a1 = factory1.createProductA();
AbstractProductA a2 = factory2.createProductA();
AbstractProductB b1 = factory1.createProductB();
AbstractProductB b2 = factory2.createProductB();
}
}
有M个产品等级就应该有M个工厂类,每个实现工厂负责不同产品族的生产。