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

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

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

duangduangduang。。。。。。Builder模式可以弥补以上不足。

让bean每个属性的set方法都返回一个对象本身的引用。代码如下:

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对象赋值就变成了:

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

是不是很简洁。。。。。

IDEA也支持这种写法呢,很简单,只需要在创建setter的时候,把默认Template换成builder即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章