代码优化----使用builder模式构造对象

看《effective java》的时候,建立对象章节提到使用builder模式来建立对象。以为很是好用,作一个记录。之后应该就会这么写啦~~~~~~ 对于一个有不少属性的类,在为属性赋值时,一般会用到两种方式,构造函数或者set方法。java

  • 使用构造函数的时候,若是参数很是多,咱们建立对象的时候就会比较痛苦,由于一长串的参数,咱们若是想知道哪些值什么意思,就须要一个一个数着参数来探个究竟。对于多个参数类型同样的构造函数,建立对象简直就是噩梦。颠倒了其中两个参数的顺序,编译器也不会报错,在运行时出现错误也很难排查。
  • 使用set方法设置必要的参数,是比较常见的一种写法。可读性也比较高。可是文中说,“javaBean模式(也就是set方法)自身有着很严重的缺点,由于构造过程被分到了几个调用中,在构造过程当中JavaBean可能处于不一致的状态”,这一点可能咱们都不多想到。

duangduangduang。。。。。。Builder模式能够弥补以上不足。函数

让bean每一个属性的set方法都返回一个对象自己的引用。代码以下:ui

public class User {
    private String name;
    private int age;
    private String sex;

    public User setName(String name) {
        this.name = name;
        return this;
    }

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

    public User setSex(String sex) {
        this.sex = sex;
        return this;
    }
}

给User对象赋值就变成了:this

User user = new User().setAge(10).setName("张").setSex("男");

是否是很简洁。。。。。code

IDEA也支持这种写法呢,很简单,只须要在建立setter的时候,把默认Template换成builder便可。 对象

相关文章
相关标签/搜索