一:图
大体是这么个意思
二:使用建造模式能达到的效果
三:建造模式的应用场景
四:code
public abstract class Car {
private String wheel;
private String body;
private String engine;
public String getWheel() {
return wheel;
}
public void setWheel(String wheel) {
this.wheel = wheel;
}
public String getBody() {
return body;
}
public void setBody(String body) {
this.body = body;
}
public String getEngine() {
return engine;
}
public void setEngine(String engine) {
this.engine = engine;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return super.toString() + "【"+this.getBody()+";"+this.getEngine()+";"+this.getWheel()+"】";
}
}
public class BMW extends Car {
}
public class KIA extends Car {
}
public interface CarBuilder {
void buildBody();
void buildWheel();
void buildEngine();
Car buildCar();
}
public class BMWBuilder implements CarBuilder {
private BMW bmw = new BMW();
@Override
public void buildBody() {
// TODO Auto-generated method stub
System.out.println("创建BMW BODY");
bmw.setBody("进口车身");
}
@Override
public void buildWheel() {
// TODO Auto-generated method stub
System.out.println("创建BMW 轮子");
bmw.setWheel("进口轮子");
}
@Override
public void buildEngine() {
// TODO Auto-generated method stub
System.out.println("创建BMW 发动机");
bmw.setEngine("进口 六汽缸发动机");
}
@Override
public Car buildCar() {
// TODO Auto-generated method stub
return bmw;
}
}
public class KIABuilder implements CarBuilder {
private KIA kia = new KIA();
@Override
public void buildBody() {
// TODO Auto-generated method stub
kia.setBody("国产车身");
System.out.println("建造kia车身");
}
@Override
public void buildWheel() {
// TODO Auto-generated method stub
System.out.println("建造kia轮胎");
kia.setWheel("国产轮胎");
}
@Override
public void buildEngine() {
// TODO Auto-generated method stub
kia.setEngine("国产发动机");
System.out.println("建造kia发动机");
}
@Override
public Car buildCar() {
// TODO Auto-generated method stub
return kia;
}
}
public class CarDirector {
CarBuilder bmwBuilder = new BMWBuilder();
CarBuilder kiaBuilder = new KIABuilder();
public Car initBMW(){
bmwBuilder.buildBody();
bmwBuilder.buildEngine();
bmwBuilder.buildWheel();
return bmwBuilder.buildCar();
}
public Car initKIA(){
kiaBuilder.buildBody();
kiaBuilder.buildWheel();
kiaBuilder.buildEngine();
return kiaBuilder.buildCar();
}
}
五:测试
public class Test {
public static void main(String[] args) {
CarDirector carDirector = new CarDirector();
Car car = carDirector.initBMW();
System.out.println(car);
carDirector = new CarDirector();
car = carDirector.initKIA();
System.out.println(car);
}
}
输出:
创建BMW BODY
创建BMW 发动机
创建BMW 轮子
create.builder.impl.BMW@1a758cb【进口车身;进口 六汽缸发动机;进口轮子】
建造kia车身
建造kia轮胎
建造kia发动机
create.builder.impl.KIA@1b67f74【国产车身;国产发动机;国产轮胎】