JavaBean Builder 模式

例如有这个一个类的构造函数:

public Register(int id, int age, String name, String address, String like, int high, int weight)

那么此时的做法:

new Register(1, 20, "A", "B", "C", 170, 60);

这样的缺点就是:

  1. 参数会很乱,调用者很容易搞错参数的位置
  2. 如果不想为某个参数赋值,那么你还是要赋值,除非你另写一个没有该值的构造函数

Builder模式

public class Register {
    private int id;
    private int age;
    private String name;
    private String address;
    private String like;
    private int high;
    private int weight;

    public static class Builder {
        private int id;
        private String name;
        private int age;
        private String address;
        private String like;
        private int high;
        private int weight;

        public Builder(int id, String name) {
            this.id = id;
            this.name = name;
        }

        public Builder age(int age){
            this.age = age;
            return this;
        }

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

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

        public Builder high(int high){
            this.high = high;
            return this;
        }

        public Builder weight(int weight){
            this.weight = weight;
            return this;
        }

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

    //私有化
    private Register(Builder builder){
        id = builder.id;
        name = builder.name;
        age = builder.age;
        address = builder.address;
        like = builder.like;
        high = builder.high;
        weight = builder.weight;
    }
}

此时的用法:

Register re = new Register.Builder(1, "liu").age(20).address("LA").like("Ball").high(180).build();

lombok.Builder 的 @Builder实现

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 9,711评论 0 13
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 8,661评论 0 4
  • 又是一年雪落时,我又想起了你。 小雪时节,雪落无声,我看着房檐树枝上的积雪,再一次思绪万千,每年雪落时,我都会想起...
    今小汐阅读 3,430评论 0 1
  • 尊敬的各位家长,大家好! 首先欢迎各位的光临,感谢大家在百忙之中来到学校指导我们的教育教学工作。我是本班的数学老师...
    丽白_776d阅读 1,864评论 0 0
  • 2018-11-2 多云 对风的渴望一重又一重 城市发出喘息的声音 就像我们在生活中喘息 生活是如此的平静 你...
    蟋蟀王阅读 3,599评论 6 7

友情链接更多精彩内容