java中Builder设计模式 原理和好处

Builder模式的定义是用于构建复杂对象的一种模式,所构建的对象往往需要多步初始化或赋值才能完成。那么,在实际的开发过程中,我们哪些地方适合用到Builder模式呢?其中使用Builder模式来替代多参数构造函数是一个比较好的实践法则。

我们有时候会写这样的实现类】

Student();

Student(String name);

Student(String name,int age);

Student(String name,int age,String address);

Student(String name,int age,String address,String ID);

public class Student{

private String name;

private int age;

private String address;

private String ID;

private Student(Builder build){

this.name=build.name;

this.age=build.age;

this.address=build.address;

this.ID=build.ID;

}

public String getName(){

return this.name;

}

public String getAge(){

return this.age;

}

public String getAddress(){

return this.address;

}

public String getID(){

return this.ID;

}

public void method(){

System.out.println(name);

}

static class Builder{

private String name=null;

private int age=0;

private String address=null;

private String ID=null;

public Builder(){};

public Builder(String name){this.name=name}; //可以不写

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

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

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

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

public Student build(){return new Student(this)}

}

最后客户程序可以很灵活比如 Student student=new Student.Builder().setName("zhangsan").setAge(12).setAddress("beijing").build();

这样就可以调用 student.getName()和getAge()等方法了。这样写会丧失一定的效率但是代码易于扩展和使用。如果对student类进行了修改加入了新的成员变量,那么只需简单修改几行代码。如果不这样写构造函数可能要添加很多喽!因为构造函数参数个数和组合有很多种。。

}

经验分享 程序员 微信小程序 职场和发展