应用背景
实现汽车组装工厂功能:汽车组装工厂可以根据汽车的发动机、车轮、底盘、车座数、汽车的排量等指标为用户组装汽车,用建造者模式解决这个问题。
代码
Car类
package MakeCar;
public class Car {
private String Engine;
private String Wheel;
private String Base;
private String Seats;
private String Displacement;
public String getDisplacement() {
return Displacement;
}
public void setDisplacement(String displacement) {
Displacement = displacement;
}
public String getSeats() {
return Seats;
}
public void setSeats(String seats) {
Seats = seats;
}
public String getBase() {
return Base;
}
public void setBase(String base) {
Base = base;
}
public String getWheel() {
return Wheel;
}
public void setWheel(String wheel) {
Wheel = wheel;
}
public String getEngine() {
return Engine;
}
public void setEngine(String engine) {
Engine = engine;
}
public String toString() {
return "发动机:"+Engine+"\n轮胎:"+Wheel+"\n底盘:"+Base+
"\n车座数:"+Seats+"\n汽车排量:"+Displacement;
}
}
CarBuilder类
package MakeCar;
public abstract class CarBuilder {
Car car=new Car();
public abstract void buildEngine();
public abstract void buildWheel();
public abstract void buildBase();
public abstract void buildSeats();
public abstract void buildDisplacement();
public Car getCar() {
return car;
}
}
PlanA类
package MakeCar;
public class PlanA extends CarBuilder{
@Override
public void buildEngine() {
// TODO Auto-generated method stub
getCar().setEngine("宝马A型号发动机");
}
@Override
public void buildWheel() {
// TODO Auto-generated method stub
getCar().setWheel("米其林A型号");
}
@Override
public void buildBase() {
// TODO Auto-generated method stub
getCar().setBase("东风A型号");
}
@Override
public void buildSeats() {
// TODO Auto-generated method stub
getCar().setSeats("4");
}
@Override
public void buildDisplacement() {
// TODO Auto-generated method stub
getCar().setDisplacement("大众A型号");
}
}
PlanB类
package MakeCar;
public class PlanB extends CarBuilder{
@Override
public void buildEngine() {
// TODO Auto-generated method stub
getCar().setEngine("大众B型号发动机");
}
@Override
public void buildWheel() {
// TODO Auto-generated method stub
getCar().setWheel("米其林B型号");
}
@Override
public void buildBase() {
// TODO Auto-generated method stub
getCar().setBase("东风B型号");
}
@Override
public void buildSeats() {
// TODO Auto-generated method stub
getCar().setSeats("12");
}
@Override
public void buildDisplacement() {
// TODO Auto-generated method stub
getCar().setDisplacement("大众B型号");
}
}
Planer类
package MakeCar;
public class Planer {
CarBuilder carbuilder;
public Planer(CarBuilder carbuilder) {
this.carbuilder=carbuilder;
}
public Car constract(){
carbuilder.buildBase();
carbuilder.buildEngine();
carbuilder.buildWheel();
carbuilder.buildDisplacement();
carbuilder.buildSeats();
return carbuilder.getCar();
}
}
Test类
package MakeCar;
public class Test {
public static void main(String[] args) {
PlanA a=new PlanA();
Planer planerA=new Planer(a);
Car car=planerA.constract();
System.out.println("汽车组装方案A:");
System.out.println(car.toString());
PlanB b=new PlanB();
Planer planerB=new Planer(b);
car=planerB.constract();
System.out.println("汽车组装方案B:");
System.out.print(car.toString());
}
}