设计模式之抽象工厂模式(abstract factory)

我们还是上面一篇工厂方法例子,使用工厂方法后,我发现工厂生产的汽车不是我要的类型,这个我就必须定一些标准,也就是一个抽象工厂。

Java 抽象工厂模式示例

public interface Car {
}

// 抽象工厂
public abstract class AbstractFactory {
	// 跑车, 具体如何生产我不知道
	public abstract Car createSportsCar();
	// 普通车 具体如何生产我不知道
	public abstract Car createSimpleCar();
}

/**
 * 法拉利工厂
 * @author Administrator
 *
 */
public class FerrariFactory extends AbstractFactory{

	@Override
	public Car createSportsCar() {
		// TODO Auto-generated method stub
    // 实现一个car,具体如何实现有每个工厂都不一样, 这里不重写了
		return null;
	}
	@Override
	public Car createSimpleCar() {
		// TODO Auto-generated method stub
    // 实现一个car,具体如何实现有每个工厂都不一样, 这里不重写了
		return null;
	}
}

/**
 * 宝马工厂
 * @author Administrator
 *
 */
public class BMWFactory extends AbstractFactory{

	@Override
	public Car createSportsCar() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public Car createSimpleCar() {
		// TODO Auto-generated method stub
		return null;
	}

}

// 使用
public class App {
	public static void main(String[] args)
	{
		// AbstractFactory factory = new BMWFactory();
		AbstractFactory factory = new FerrariFactory();
		Car sportCar = factory.createSportsCar();
		Car simpleCar = factory.createSimpleCar();
	}
}

从上面我们可以看到,当我们如果不喜欢宝马的时候,直接替换法拉利的工厂的实现类就行了!是不是更方便呢?