定义:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类
抽象工厂实现
/**
* 声明汽车接口
*/
public abstract class AbstractBenChiCar {
// 汽车公共部分
public void shareMethod() {
System.out.println("奔驰汽车的公共部分");
}
public abstract void doSomething();
}
/**
* 奔驰普通版
*/
public class BenChiA extends AbstractBenChiCar {
@Override
public void doSomething() {
System.out.println("普通版");
}
}
/**
* 奔驰豪华版
*/
public class BenChiB extends AbstractBenChiCar {
@Override
public void doSomething() {
System.out.println("豪华版");
}
}
/**
* 普通版汽车工厂接口(可以有 宝马、现代)
*/
public abstract class AbstractFactoryA {
public abstract AbstractBenChiCar createBenChiA();
}
/**
* 豪华版汽车工厂接口(可以有 宝马、现代)
*/
public abstract class AbstractFactoryB {
public abstract AbstractBenChiCar createBenChiB();
}
/**
* 普通版汽车工厂实现
*/
public class FactoryA extends AbstractFactoryA {
@Override
public AbstractBenChiCar createBenChiA() {
return new BenChiA();
}
}
/**
* 豪华版汽车工厂实现
*/
public class FactoryB extends AbstractFactoryB {
@Override
public AbstractBenChiCar createBenChiB() {
return new BenChiB();
}
}
注意:对产品族扩展困难(汽车类型),对产品等级(版本增多一个屌丝版)容易