public class Client {
public static void main(String[] args) {
ProductLine line= new ProductLine();
CarBuilder cb = new CarBuilderA();
line.setCarBuilder(cb);
Car car=line.construct();
System.out.println("car:");
System.out.println(car.getEngine());
System.out.println(car.getClutch());
}
}
public class Car {
private String engine;
private String clutch;
public String getEngine() {
return engine;
}
public void setEngine(String engine) {
this.engine = engine;
}
public String getClutch() {
return clutch;
}
public void setClutch(String clutch) {
this.clutch = clutch;
}
}
public class CarBuilder {
protected Car car =new Car(); //之后的操作都对car这个对象进行操作
public void buildEngine() {
}
public void buildClutch() {
}
public Car getCar() {
return car;
}
}
public class ProductLine {
private CarBuilder cb;
public void setCarBuilder(CarBuilder cb) {
this.cb = cb;
}
public Car construct() {
cb.buildEngine();
cb.buildClutch();
return cb.getCar();
}
}
public class CarBuilderA extends CarBuilder{
@Override
public void buildEngine() {
// TODO Auto-generated method stub
car.setEngine("1.5T");
}
@Override
public void buildClutch() {
// TODO Auto-generated method stub
car.setClutch("MT"); //MT:manual transmission
}
}
public class CarBuilderB extends CarBuilder{
@Override
public void buildEngine() {
// TODO Auto-generated method stub
car.setEngine("2.0T");
}
@Override
public void buildClutch() {
// TODO Auto-generated method stub
car.setClutch("MT"); //MT:manual transmission
}
}
public class CarBuilderC extends CarBuilder{
@Override
public void buildEngine() {
// TODO Auto-generated method stub
car.setEngine("2.0T");
}
@Override
public void buildClutch() {
// TODO Auto-generated method stub
car.setClutch("AT"); //AT:auto transmission
}
}
tips:之前的设计模式都是面向接口编程,而Builder模式有了关于类的继承的内容