对建造者模式理解

当对象成员变量太多时,使用建造方法给变量赋值往往变得很臃肿,所以可以这样做

java 复制代码
public class Something {

    private String a;
    private String b;
    private String c;
    private String d;
    private String e;

    public Something(Builder builder) {
        this.a = builder.a;
        this.b = builder.b;
        this.c = builder.c;
        this.d = builder.d;
        this.e = builder.e;
    }

    static class Builder{
        private String a;
        private String b;
        private String c;
        private String d;
        private String e;

        public Builder setA(String a) {
            this.a = a;
            return this;
        }

        public Builder setB(String b) {
            this.b = b;
            return this;
        }

        public Builder setC(String c) {
            this.c = c;
            return this;
        }

        public Builder setD(String d) {
            this.d = d;
            return this;
        }
        public Builder setE(String e) {
            this.e = e;
            return this;
        }

        public Something build() {
            return new Something(this);
        }
    }

    public static void main(String[] args) {
        Something something = new Something.Builder().setA("a").setB("b").
                setC("c").setD("d").setE("e").build();
        System.out.println(something.a);
    }

对传统建造者模式的理解

传统建造者模式,可以将实体类中的部分属性抽象出来并单独建造,并且实体的构建过程交予构造者。我认为这是外观模式和策略模式的结合。

关于传统建造者模式可以看如下文章

秒懂设计模式之建造者模式(Builder pattern) - shusheng007的文章 - 知乎

相关推荐
山荷枝12 小时前
Java学习第十天
java·学习
kyriewen12 小时前
我排查了一个React内存泄漏——罪魁祸首是这3个被忽略的清理函数
前端·javascript·面试
matlabgoodboy12 小时前
计算机毕设代做|Java Python Matlab APP 全套开发设计
java·python·课程设计
IT_陈寒12 小时前
我又被JavaScript的隐式类型转换坑了
前端·人工智能·后端
其美杰布-富贵-李13 小时前
03 ref、reactive 与 computed 响应式数据
前端·javascript·vue.js
OpenTiny社区13 小时前
GenUI SDK v1.3.0 发布|多框架兼容,一键换物料,渲染器 & 演练场全面增强!
前端·ai编程
用户9385156350713 小时前
useRef + Web Worker 实战:React 如何优雅地拥抱多线程
前端·javascript·react.js
他们叫我秃子13 小时前
前端开发转 Go 全栈(五):终于遇到熟人了,Go 的闭包和高阶函数原来这么像 JavaScript
前端·后端·go
用户615958680002213 小时前
从 0 写一个迷你 wujie:用原生 Web API 实现微前端
前端
妙码生花13 小时前
从 PHP 到 AI + Golang,程序员自救转型手记(五十七):AI时代对组件封装的新理解、agInput 统一入口,动态表单预备
前端·后端·go