抽象工厂模式:提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。
抽象工厂模式:每个抽象工厂派生多个具体工厂,每个抽象产品派生多个具体产品。每个具体工厂创建一系列具体产品。
例如,我们现在有两种产品A和B,而产品A和B分别都有两个厂商1和2进行生产,在这里我们把不同的厂商1、厂商2理解为牌子1和牌子2,那么厂商1就生产A1、B1,厂商2生产A2、B2。
此时,不同的厂商肯定要生产自己的产品(如A1、B1),每个厂商都有自己的一系列产品,这就与上面抽象工厂模式的描述类似了。
public interface AbstractFactory {
public AbstractProductA createProductA();
public AbstractProductB createProductB();
}
public class ConcreteFactory1 implements AbstractFactory{
@Override
public AbstractProductA createProductA() {
return new ProductA1();
}
@Override
public AbstractProductB createProductB() {
// TODO Auto-generated method stub
return new ProductB1();
}
}
public class ConcreteFactory2 implements AbstractFactory{
@Override
public AbstractProductA createProductA() {
return new ProductA2();
}
@Override
public AbstractProductB createProductB() {
// TODO Auto-generated method stub
return new ProductB2();
}
}
public interface AbstractProductA {
}
public interface AbstractProductB {
}
public class ProductA1 implements AbstractProductA {
}
public class ProductA2 implements AbstractProductA {
}
public class ProductB1 implements AbstractProductB{
}
public class ProductB2 implements AbstractProductB{
}
public class Client {
public static void main(String []args){
AbstractFactory Factory1 = new ConcreteFactory1();
Factory1.createProductA();
Factory1.createProductB();
}
}