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

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

Android小彩虹2021-07-18 15:25:56120A+A-

构建者模式

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

优缺点

优点

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

点击这里复制本文地址 以上内容由权冠洲的博客整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!

支持Ctrl+Enter提交

联系我们| 本站介绍| 留言建议 | 交换友链 | 域名展示
本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除

权冠洲的博客 © All Rights Reserved.  Copyright quanguanzhou.top All Rights Reserved
苏公网安备 32030302000848号   苏ICP备20033101号-1

联系我们