标签:模式
在很多情况下我们需要定义一个Class且里面有很多成员变量的时候通常我们的写法是
class Person {
    private String name;
    private int age;
    private int sex;
    private int high;
    private int face;
    private int weight;
    private int foot;
    public Person() {...}
    public Person(String name) {...}
    ...
    public Person(String name, int age, int sex, int high, int face, int weight, int foot) {
    }
    }我们为了不让一个构造函数过长,所以我们提供了很多个构造函数所以我们new出一个对象的时候看起来不是很直观。
Person p = new Person();
p.setName();
p.setAge();
...
p.setWeight();当然我们还有以上这种方式,JavaBean这种方式是可以 当时有时候感觉代码太多行了。 
所以就有了Builder模式来专门针对这种成员变量过多的类进行new使用,大概定义如下:
class Person {
    private String name;
    private int age;
    private int sex;
    private int high;
    private int face;
    private int weight;
    private int foot;
    public Person(Builder builder) {
        name = builder.name;
        age = builder.age;
        sex = builder.sex;
        high = builder.high;
        face = builder.face;
        weight = builder.weight;
        foot = builder.foot;
    }
    public static class Builder {
        private String name;
        private int age;
        private int sex;
        private int high;
        private int face;
        private int weight;
        private int foot;
        public Person build() {
            return new Person(this);
        }
        public Builder setName(String name) {
            this.name = name;
            return this;
        }
        public Builder setAge(int age) {
            this.age = age;
            return this;
        }
        public Builder setSex(int sex) {
            this.sex = sex;
            return this;
        }
        public Builder setHigh(int high) {
            this.high = high;
            return this;
        }
        public Builder setFace(int face) {
            this.face = face;
            return this;
        }
        public Builder setWeight(int weight) {
            this.weight = weight;
            return this;
        }
        public Builder setFoot(int foot) {
            this.foot = foot;
            return this;
        }
    }
}然后我们在Demo测试中只要这么写
Person p = new Person.Builder().setAge(12).setFace(12).setFoot(12).setHigh(180).setName("jayu").setSex(1).setWeight(89).build();是不是看起来清爽多了,以后多成员变量的就使用了这种方式来写更有逼格,不是么。
标签:模式
原文地址:http://blog.csdn.net/neacy_zz/article/details/45586881