⭐️写在前面
- 这里是温文艾尔的学习之路
- 如果对你有帮助,给博主一个免费的点赞以示鼓励把QAQ
- 博客主页 温文艾尔的学习小屋
- ⭐️更多文章请关注温文艾尔主页
- 文章发布日期:2022.05.07
- java学习之路!
- 欢迎各位点赞评论收藏⭐️
- 冲冲冲
- ⭐️上一篇内容:【面试高频】Java设计原则总结
将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示
建造者(Builder)模式包含如下角色:
我们通过一个案例来完成建造者模式
【创建共享单车】
生产自行车是一个复杂的过程,它包含了车架,车座等组件的生产。而车架又有碳纤维,铝合金等材质的,车座有橡胶,真皮等材质。对于自行车的生产就可以使用建造者模式
这里Bike是产品,包含车架,车座等组件,Builder是抽象建造者,MobikeBuilder和OfoBuilder是具体的建造者;Director是指挥者,类图如下
public abstract class Builder {
protected Bike bike = new Bike();
public abstract void buildFrame();
public abstract void buildSeat();
public abstract Bike createBike();
}
public class MobikeBuilder extends Builder {
@Override
public void buildFrame() {
bike.setFrame("碳纤维车架");
}
@Override
public void buildSeat() {
bike.setSeat("真皮车座");
}
@Override
public Bike createBike() {
return bike;
}
}
public class OfoBuilder extends Builder {
@Override
public void buildFrame() {
System.out.println("铝合金车架");
}
@Override
public void buildSeat() {
System.out.println("橡胶车座");
}
@Override
public Bike createBike() {
return bike;
}
}
public class Director {
private Builder builder;
public Director(Builder builder){
this.builder=builder;
}
public Bike Director() {
builder.buildFrame();
builder.buildSeat();
return builder.createBike();
}
}
public class Client {
public static void main(String[] args) {
Builder mobike = new MobikeBuilder();
Director director = new Director(mobike);
Bike director1 = director.Director();
System.out.println(director1.getFrame());
System.out.println(director1.getSeat());
}
}
碳纤维车架
真皮车座
优点
缺点
建造者(Builder)模式创建的是复杂对象,其产品的各个部分经常面临着剧烈的变化,但将它们组合在一起的算法却相对稳定,所以它通常在以下场合使用