所谓建造者就是“分步构建一个复杂的对象”,当每一步构建完毕才是一个完整的对象,比如汽车,它有好多零件,轮胎、发动机、方向盘等等零件,当中任何一个零件不完整都无法构建这个汽车,是个半成品,只有当中所有零件都完成了,这时候汽车才可以驾驶。
知识点:抽象类、继承
代码如下:
汽车产品
package com.chris.builder;
public class Car {
private String tyre;//轮胎
private String engine;//引擎
private String steering;//方向盘
public String getTyre() {
return tyre;
}
public void setTyre(String tyre) {
this.tyre = tyre;
}
public String getEngine() {
return engine;
}
public void setEngine(String engine) {
this.engine = engine;
}
public String getSteering() {
return steering;
}
public void setSteering(String steering) {
this.steering = steering;
}
}package com.chris.builder;
public abstract class CarBuilder {
protected Car car = new Car();
public abstract void buildTyre();//生产轮胎
public abstract void buildEngine();//生产引擎
public abstract void buildSteering();//生产方向盘
public Car createCar(){//构建汽车
return car;
}
}
构建一个具体品牌汽车
package com.chris.builder;
public class BmwCar extends CarBuilder {
@Override
public void buildTyre() {
car.setTyre("组装宝马轮胎");
}
@Override
public void buildEngine() {
car.setEngine("组装宝马引擎");
}
@Override
public void buildSteering() {
car.setSteering("组装宝马方向盘");
}
}创建汽车实体的指令交给一个控制者
package com.chris.builder;
public class CarController {
public Car construct(CarBuilder carBuilder){
carBuilder.buildEngine();
carBuilder.buildSteering();
carBuilder.buildTyre();
Car createCar = carBuilder.createCar();
return createCar;
}
//测试
public static void main(String[] args) {
BmwCar bmw = new BmwCar();
// BencCar benc = new BencCar();
CarController controller = new CarController();
Car bmwCar = controller.construct(bmw);
// Car bcCar = controller.construct(benc);
System.out.println(bmwCar.getEngine());
System.out.println(bmwCar.getSteering());
System.out.println(bmwCar.getTyre());
}
}
本文通过构建汽车的例子详细解析了建造者模式的实现过程。利用抽象类定义了一个汽车建造者的骨架,并通过具体的品牌实现展示了如何逐步构造一个完整的汽车对象。

被折叠的 条评论
为什么被折叠?



