对建造者模式理解

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

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

相关推荐
飞翔的佩奇2 分钟前
Java项目:基于SSM框架实现的忘忧小区物业管理系统【ssm+B/S架构+源码+数据库+毕业论文+开题报告】
java·数据库·mysql·vue·毕业设计·ssm框架·小区物业管理系统
程序员爱钓鱼10 分钟前
Go语言泛型-泛型约束与实践
前端·后端·go
前端小巷子11 分钟前
web从输入网址到页面加载完成
前端·面试·浏览器
江城开朗的豌豆12 分钟前
Vue路由动态生成秘籍:让你的链接'活'起来!
前端·javascript·vue.js
晓得迷路了12 分钟前
栗子前端技术周刊第 88 期 - Apache ECharts 6.0 beta、Deno 2.4、Astro 5.11...
前端·javascript·echarts
江城开朗的豌豆18 分钟前
在写vue公用组件的时候,怎么提高可配置性
前端·javascript·vue.js
江城开朗的豌豆18 分钟前
Vue路由跳转的N种姿势,总有一种适合你!
前端·javascript·vue.js
江城开朗的豌豆19 分钟前
Vue路由玩法大揭秘:三种路由模式你Pick谁?
前端·javascript·vue.js
江城开朗的豌豆20 分钟前
Vue路由守卫全攻略:给页面访问装上'安检门'
前端·javascript·vue.js
RainbowSea20 分钟前
跨域问题(Allow CORS)解决(3 种方法)
java·spring boot·后端