public class Car {
/**
* 发动机
*/
private Engine engine;
/**
* 车轮
*/
private Wheel wheel;
/**
* 车架
*/
private Frame frame;
public Engine getEngine() {
return engine;
}
public void setEngine(Engine engine) {
this.engine = engine;
}
public Wheel getWheel() {
return wheel;
}
public void setWheel(Wheel wheel) {
this.wheel = wheel;
}
public Frame getFrame() {
return frame;
}
public void setFrame(Frame frame) {
this.frame = frame;
}
}
class Engine {
/**
* 发动机的各种零件
*/
private String enginePart;
public String getEnginePart() {
return enginePart;
}
public void setEnginePart(String enginePart) {
this.enginePart = enginePart;
}
public Engine(String enginePart) {
super();
this.enginePart = enginePart;
}
}
class Wheel {
public Wheel(String wheelPart) {
super();
this.wheelPart = wheelPart;
}
/**
* 轮子的各种部件
*/
private String wheelPart;
public String getWheelPart() {
return wheelPart;
}
public void setWheelPart(String wheelPart) {
this.wheelPart = wheelPart;
}
}
class Frame {
public Frame(String framePart) {
super();
this.framePart = framePart;
}
/**
* 车架的各种部件
*/
private String framePart;
public String getFramePart() {
return framePart;
}
public void setFramePart(String framePart) {
this.framePart = framePart;
}
}
/**
* 建造者接口
*
* @author Administrator
*
*/
public interface CarBuilder {
public Engine builderEngine();
public Wheel builderWheel();
public Frame builderFrame();
}
/**
* 建造者(奔驰构建类)
* @author Administrator
*
*/
public class BenCarbuilder implements CarBuilder {
@Override
public Engine builderEngine() {
System.out.println("构建发动机");
return new Engine("德国发动机");
}
@Override
public Wheel builderWheel() {
System.out.println("构建车轮");
return new Wheel("中国车轮");
}
@Override
public Frame builderFrame() {
System.out.println("构建车架");
return new Frame("中国车架");
}
}
public interface CarDirector {
/**
* 构建汽车
*
* @return
*/
public Car directorCar();
}
public class BenCarDirector implements CarDirector {
private CarBuilder carBuilder;
public BenCarDirector(CarBuilder carBuilder) {
super();
this.carBuilder = carBuilder;
}
@Override
public Car directorCar() {
Engine engine = carBuilder.builderEngine();
Wheel wheel = carBuilder.builderWheel();
Frame frame = carBuilder.builderFrame();
Car car = new Car();
car.setEngine(engine);
car.setWheel(wheel);
car.setFrame(frame);
return car;
}
}
public class Client {
public static void main(String[] args) {
CarDirector director = new BenCarDirector(new BenCarbuilder());
Car car = director.directorCar();
System.out.println(car.getEngine().getEnginePart());
System.out.println(car.getWheel().getWheelPart());
System.out.println(car.getFrame().getFramePart());
}
}