1.概念

建造者模式可以将部件和其组装过程分开,一步一步创建一个复杂的对象 。用户只需要指定复杂对象的类型就可以得到该对象,而无须知道其内部的具体构造细节 。
2、结构


3、例子


//自行车类 产品类
public class Bike {
private String frame;
private String seat;
public String getSeat() {
return seat;
}
public void setSeat(String seat) {
this.seat = seat;
}
public String getFrame() {
return frame;
}
public void setFrame(String frame) {
this.frame = frame;
}
@Override
public String toString() {
return "Bike{" +
"frame='" + frame + '\'' +
", seat='" + seat + '\'' +
'}';
}
}
//抽象建造者
public abstract class Builder {
//得换成protected 子类才能用
protected Bike bike=new Bike();
public abstract void buildFrame();
public abstract void buildSeat();
public abstract Bike createBike();
}
//具体创建者类 摩拜单车
public class MobaBuilder extends Builder {
@Override
public void buildFrame() {
bike.setFrame("炭纤维车架");
}
@Override
public void buildSeat() {
bike.setSeat("黄金座椅");
}
@Override
public Bike createBike() {
return bike;
}
}
//具体创建者类 ofo单车
public class OfoBuilder extends Builder {
@Override
public void buildFrame() {
bike.setFrame("铁车架");
}
@Override
public void buildSeat() {
bike.setSeat("铁座椅");
}
@Override
public Bike createBike() {
return bike;
}
}
//指挥者类
public class Director {
private Builder builder;
public Director(Builder builder){
this.builder=builder;
}
public Bike construct(){
builder.buildFrame();
builder.buildSeat();
return builder.createBike();
}
}
//测试类
public class Client {
public static void main(String[] args) {
Director director=new Director(new OfoBuilder());
System.out.println(director.construct());
//改为模拜的话,只需要在上面new Director传入就好
}
}
4、优缺点

5、工厂模式与建造者模式对比

建造者模式是一种设计模式,它将对象的构建与表示分离,使得创建复杂对象的过程更加灵活。通过指挥者类,用户可以指定不同类型的建造者来创建具有不同特性的对象,如摩拜单车和ofo单车。这种模式在不暴露构造细节的情况下提供了可配置的构造过程。
862

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



