对建造者模式理解

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

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的文章 - 知乎

相关推荐
懒洋洋大魔王几秒前
7.Java高级编程 多线程
java·开发语言·jvm
茶馆大橘5 分钟前
【黑马点评】已解决java.lang.NullPointerException异常
java·开发语言
星辰@Sea9 分钟前
服务注册中心对比及使用场景分析
java·云原生
马剑威(威哥爱编程)12 分钟前
除了递归算法,要如何优化实现文件搜索功能
java·开发语言·算法·递归算法·威哥爱编程·memoization
bug菌¹14 分钟前
滚雪球学SpringCloud[4.1讲]: Spring Cloud Gateway详解
java·spring cloud·微服务
罔闻_spider24 分钟前
爬虫----webpack
前端·爬虫·webpack
吱吱鼠叔26 分钟前
MATLAB数据文件读写:1.格式化读写文件
前端·数据库·matlab
MuseLss34 分钟前
HashMap高频面试知识点
java·开发语言·哈希算法
tyler-泰勒36 分钟前
初始c++:入门基础(完结)
java·开发语言·c++
爱喝水的小鼠43 分钟前
Vue3(一) Vite创建Vue3工程,选项式API与组合式API;setup的使用;Vue中的响应式ref,reactive
前端·javascript·vue.js