abstract class AbstractProductA {
public abstract void show();
}
abstract class AbstractProductB {
public abstract void show();
}
class ConcreteProductA1 extends AbstractProductA {
@Override
public void show() {
System.out.println("ConcreteProductA1");
}
}
class ConcreteProductA2 extends AbstractProductA {
@Override
public void show() {
System.out.println("ConcreteProductA2");
}
}
class ConcreteProductB1 extends AbstractProductB {
@Override
public void show() {
System.out.println("ConcreteProductB1");
}
}
class ConcreteProductB2 extends AbstractProductB {
@Override
public void show() {
System.out.println("ConcreteProductB2");
}
}
AbstractFactory : 声明一个接口,这个接口中包含创建抽象产品对象的方法。
abstract class AbstractFactory {
public abstract AbstractProductA createProductA();
public abstract AbstractProductB createProductB();
}
ConcreteFactory : 实现创建具体产品对象的方法。
class ConcreteFactory1 extends AbstractFactory {
@Override
public AbstractProductA createProductA() {
return new ConcreteProductA1();
}
@Override
public AbstractProductB createProductB() {
return new ConcreteProductB1();
}
}
class ConcreteFactory2 extends AbstractFactory {
@Override
public AbstractProductA createProductA() {
return new ConcreteProductA2();
}
@Override
public AbstractProductB createProductB() {
return new ConcreteProductB2();
}
}