构建者模式
顾名思义,就是创建对象像盖房子一样,通过配置不同的参数,类似地板颜色,吊顶颜色,墙壁颜色等;最后制定最后的设计图来进行施工
优缺点
优点
1)降低代码耦合度。在建造者模式中,客户端不需要知道产品内部是如何实现的,我们只需得到产品的对象。并且使用导演者和建造者分离组装过程和组件具体构造过程,具有灵活的扩展性。
2)优秀的扩展性。具体建造者相互独立,方便扩展,符合开闭原则。
缺点
1)一定的使用范围限制。建造者模式的产品的组件基本相同,如果产品的差异性较大,建造者模式就不适用了
代码设计
设计一套房子,确定房子的格局,装修和各个房间的占地面积等来确定最终的设计图
public class HouseBuild {
private String door;
private String room;
private String toilet;
public HouseBuild(Builder builder) {
this.door=builder.door;
this.room=builder.room;
this.toilet=builder.toilet;
}
public String build(){
return "设计图新建成功,房间是:"+room
+",卫生间是:"+toilet
+",大门是:"+door;
}
static class Builder {
private String door;
private String room;
private String toilet;
public Builder door(String door) {
this.door = door;
return this;
}
public Builder room(String room) {
this.room = room;
return this;
}
public Builder toilet(String toilet) {
this.toilet = toilet;
return this;
}
public HouseBuild build() {
return new HouseBuild(this);
}
}
}
复制代码
使用
public static void main(String[] args) {
HouseBuild houseBuild=new HouseBuild.Builder()
.room("25平的房子")
.door("红色的大门")
.toilet("5平的卫生间")
.build();
System.out.println(houseBuild.build());
}
输出"设计图新建成功,房间是:25平的房子,卫生间是:5平的卫生间,大门是:红色的大门"
复制代码
后言
构建者模式在确认各个配置项的时候可以设置一些默认值;例如,默认大门是黑色的,卫生间是10平等。这样在新增一些配置项的时候,例如户型增加了50平,那么基于这50平可以做出其他的设计方案;对于之前的户型设计中,对于这新的50平的设计是空白的;
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END