建造者模式实现汽车组装工厂功能(Java代码实例)

应用背景

实现汽车组装工厂功能:汽车组装工厂可以根据汽车的发动机、车轮、底盘、车座数、汽车的排量等指标为用户组装汽车,用建造者模式解决这个问题。

代码

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());     
	}
}

运行结果

猜你喜欢

转载自blog.csdn.net/Luoxiaobaia/article/details/120496245