package com.cheng.zenofdesignpatterns.patternpk.creational.abstractfactory_vs_builder.builder;
/**
* 导演类
*/
public class CarDirector {
// 声明对建造者的引用
private CarBuilder benzBuilder = new BenzBuilder();
private CarBuilder bmwBuilder = new BMWBuilder();
// 生产奔驰SUV车型
public ICarBuilder createBenzSuv() {
// 制造出汽车
return createCar(benzBuilder, "benz的引擎", "benz的轮胎");
}
// 生产出一辆宝马的商务车
public ICarBuilder createBMWVan() {
return createCar(bmwBuilder, "BMW的引擎", "BMW的轮胎");
}
// 生产出一个混合车型
public ICarBuilder createComplexCar() {
return createCar(bmwBuilder, "BMW的引擎", "benz的轮胎");
}
// 生产车辆
private ICarBuilder createCar(CarBuilder _carBuilder, String _engine, String _wheel) {
// 导演怀揣蓝图
Blueprint bp = new Blueprint();
bp.setEngine(_engine);
bp.setWheel(_wheel);
System.out.println("获得生产蓝图");
_carBuilder.receiveBlueprint(bp);
return _carBuilder.buildCar();
}
}