设计模式之抽象工厂模式(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();
}
}
从上面我们可以看到,当我们如果不喜欢宝马的时候,直接替换法拉利的工厂的实现类就行了!是不是更方便呢?