public class AutoUser {
private final String myGirl;//带有final修饰的是必须填的
private String myBoy; //选填 通过
private int mAge;
/**
* 私有的构造函数
* 只能通过内部类Builder给其属性赋值
* @param builder
*/
private AutoUser(Builder builder) {
myGirl = builder.myGirl;
myBoy = builder.myBoy;
mAge = builder.mAge;
}
/**
* 相当于 整个AutoUser类本身自己不能通过:构造参数,set方法给属性赋值
* new AutoUser.Builder("林青霞").myBoy("刘德华").build();
* 外部类.内部类的构造函数(参数).各种赋值方法将外边的值传递给Builder,
* 而Builder.build()方法中返回的是new AutoUser(this);
* 调用外部类的构造函数,将Builder传递给外部类,然后进行赋值
*
*/
public static class Builder {
private final String myGirl;
private String myBoy;
private int mAge;
public Builder(String myGirl) {
this.myGirl = myGirl;
}
public Builder myBoy(String myBoy) {
this.myBoy = myBoy;
return this;
}
public Builder mAge(int mAge) {
this.mAge = mAge;
return this;
}
/**
* build()的时候,返回AutoUser对象;
*
* @return new AutoUser(this);
* this指的是:这个Builder对象!
* private AutoUser(Builder builder) {...}
* 因为AutoUser类 构造函数 的参数是一个Builder,所以将这个builder传给AutoUser;
*/
public AutoUser build() {
return new AutoUser(this);
}
}
public String getMyGirl() {
return myGirl;
}
public String getMyBoy() {
return myBoy;
}
public int getAge() {
return mAge;
}
}
使用方法
AutoUser autoUser = new AutoUser.Builder("王祖贤")//必传参数
.myBoy("刘德华") //选传参数
.mAge(11) //选传参数
.build();
// 类似OkHttpUtils...addParams("","").addParams("","").build().exite(...);
// OkHttpUtils.post().url(url)
// .addParams( "..." , "..." )
// .addParams( "..." , "..." )
// .addParams( "..." , "..." )
// .addParams( "..." , "..." )
// .build().execute(new StringCallback() {....});
autoUser.getAge();
autoUser.getMyBoy();
autoUser.getMyGirl();