
代码实现
- 下面是一个简单的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 + '\'' + |
| '}'; |
| } |
| } |
| 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) { |
| |
| SedanCarBuilder sedanCarBuilder = new SedanCarBuilder(); |
| Director director = new Director(sedanCarBuilder); |
| director.constructSedanCar(); |
| |
| |
| SUVCarBuilder suvCarBuilder = new SUVCarBuilder(); |
| director = new Director(suvCarBuilder); |
| director.constructSUVCar(); |
| } |
| } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)