一个对象的属性过多,用构造方法构造不同的对象就会出现参数个数和类型相同参数含义不同的问题,导致无法重写构造方法,又不想一直set,最后就可以用Build模式构造。
Demo:
/**
* 2019年10月31日上午10:29:11
*/
package testBuildObj;
/**
* @author XWF
*
*/
public class TestBuildObject {
private int id;
private String name;
private String address;
private TestBuildObject(int id, String name, String address) {
super();
this.id = id;
this.name = name;
this.address = address;
}
public static MyBuilder newBuilder() {
return new MyBuilder();
}
public static class MyBuilder{
private int id;
private String name;
private String address;
public MyBuilder id(int id) {
this.id = id;
return this;
}
public MyBuilder name(String name) {
this.name = name;
return this;
}
public MyBuilder address(String address) {
this.address = address;
return this;
}
public TestBuildObject build() {
TestBuildObject obj = new TestBuildObject(this.id, this.name, this.address);
return obj;
}
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public String getAddress() {
return address;
}
@Override
public String toString() {
return "TestBuildObject [id=" + id + ", name=" + name + ", address=" + address + "]";
}
}
/**
* 2019年10月31日上午10:34:24
*/
package testBuildObj;
/**
* @author XWF
*
*/
public class TestBuildObjMain {
/**
* @param args
*/
public static void main(String[] args) {
TestBuildObject obj = TestBuildObject.newBuilder().id(12).name("Tom").address("Pandora").build();
System.out.println(obj);
TestBuildObject obj2 = TestBuildObject.newBuilder().name("Jerry").build();
System.out.println(obj2);
}
}
结果: