Java建造者模式

代码实现
  • 下面是一个简单的Java建造者模式的案例,这个案例展示了一个Car类(产品类),由CarBuilder接口(构建器接口)和多个实现了这个接口的SedanCarBuilder、SUVCarBuilder类(具体构建器类)来构建。
  • 首先是Car类(产品类):
public class Car {
private String model;
private String engine;
private String transmission;
public Car(String model, String engine, String transmission) {
this.model = model;
this.engine = engine;
this.transmission = transmission;
}
public Car(){
}
public String showCarDetail(){
System.out.println("Car Model: "+model);
System.out.println("Engine: "+engine);
System.out.println("Transmission: "+transmission);
return "haha";
}
public String getModel() {
return model;
}
public void setModel(String model) {
this.model = model;
}
public String getEngine() {
return engine;
}
public void setEngine(String engine) {
this.engine = engine;
}
public String getTransmission() {
return transmission;
}
public void setTransmission(String transmission) {
this.transmission = transmission;
}
@Override
public String toString() {
return "Car{" +
"model='" + model + '\'' +
", engine='" + engine + '\'' +
", transmission='" + transmission + '\'' +
'}';
}
}
  • 接下来是CarBuilder接口(构建器接口):
public interface CarBuilder {
void setModel(String model);
void setEngine(String engine);
void setTransmission(String transmission);
Car build();
}
  • 然后是实现CarBuilder接口的SedanCarBuilder(具体构建器类)
public class SedanCarBuilder implements CarBuilder{
private Car car;
public SedanCarBuilder(){
this.car = new Car();
}
@Override
public void setModel(String model) {
car.setModel(model);
}
@Override
public void setEngine(String engine) {
car.setEngine(engine);
}
@Override
public void setTransmission(String transmission) {
car.setTransmission(transmission);
}
@Override
public Car build() {
return car;
}
}
  • 实现CarBuilder接口的SUVCarBuilder类
public class SUVCarBuilder implements CarBuilder{
private Car car;
public SUVCarBuilder (){
this.car = new Car();
}
@Override
public void setModel(String model) {
car.setModel(model);
}
@Override
public void setEngine(String engine) {
car.setEngine(engine);
}
@Override
public void setTransmission(String transmission) {
car.setTransmission(transmission);
}
@Override
public Car build() {
return car;
}
}
  • 最后是Director类(指挥者类),它使用构建器对象来构建产品
public class Director {
private CarBuilder carBuilder;
public Director(CarBuilder carBuilder){
this.carBuilder = carBuilder;
}
public void constructSedanCar(){
carBuilder.setModel("Sedan Model X");
carBuilder.setEngine("2.5L Trubo");
carBuilder.setTransmission("Semi-Automatic");
Car car = carBuilder.build();
car.showCarDetail();
System.out.println(car.toString());
System.out.println("====");
}
public void constructSUVCar(){
carBuilder.setModel("SUV Model Y");
carBuilder.setEngine("3.5L V6");
carBuilder.setTransmission("4x4");
Car car = carBuilder.build();
car.showCarDetail();
System.out.println(car.toString());
}
}
  • 客户端代码可以这样使用建造者模式:
public class Client {
public static void main(String[] args) {
//构建Sedan车型
SedanCarBuilder sedanCarBuilder = new SedanCarBuilder();
Director director = new Director(sedanCarBuilder);
director.constructSedanCar();
//构建SUV车型
SUVCarBuilder suvCarBuilder = new SUVCarBuilder();
director = new Director(suvCarBuilder);
director.constructSUVCar();
}
}
posted @   文采杰出  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示