简述设计模式:Builder 构建者模式

535 阅读2分钟

构建者模式

顾名思义,就是创建对象像盖房子一样,通过配置不同的参数,类似地板颜色,吊顶颜色,墙壁颜色等;最后制定最后的设计图来进行施工

优缺点

优点

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平的设计是空白的;