估计是这周工作日的最后一篇了,刚才总监和我说又有新任务了。。明明昨天二期才刚结束呜呜呜呜呜呜呜呜呜呜。
Builder模式,我的理解就是当初始化一个对象特别复杂或者不同的调用顺序会产生不同结果时,使用builder模式那是极好的。废话不多说,上代码。
想象一个场景。造人怎么样???哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈
来个实体类Lady!!!
public class Lady {
private static final String TAG = Lady.class.getSimpleName();
private String name;//姓名
private int age;//年龄
private int height;//身高
private String education;//学历
private Cup cup;//????
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getHeight() {
return height;
}
public void setHeight(int height) {
this.height = height;
}
public String getEducation() {
return education;
}
public void setEducation(String education) {
this.education = education;
}
public Cup getCup() {
return cup;
}
public void setCup(Cup cup) {
this.cup = cup;
}
void show() {
Log.i(TAG, this.toString());
}
@Override
public String toString() {
return "我叫" + name +
", 今年" + age + "岁~" +
", 身高" + height + "cm" +
", " + education + "毕业" +
", 那个~~~~~罩杯是。。。" + cup +
"-Cup yeah!!";
}
enum Cup {//????
AA, A, B, C, D, E, F
}
}
OK,正题我们的Builder类
class LadyBuilder {
private final LadyParams ladyParams;
public LadyBuilder() {
ladyParams = new LadyParams();
}
public LadyBuilder setName(String name) {
ladyParams.name = name;
return this;
}
public LadyBuilder setAge(int age) {
ladyParams.age = age;
return this;
}
public LadyBuilder setHeight(int height) {
ladyParams.height = height;
return this;
}
public LadyBuilder setEducation(String education) {
ladyParams.education = education;
return this;
}
public LadyBuilder setCup(Lady.Cup cup) {
ladyParams.cup = cup;
return this;
}
public Lady create() {
Lady lady = new Lady();
lady.setName(ladyParams.name);
lady.setAge(ladyParams.age);
lady.setHeight(ladyParams.height);
lady.setEducation(ladyParams.education);
lady.setCup(ladyParams.cup);
return lady;
}
private static class LadyParams {//Holder类,用于保存状态
private String name;//姓名
private int age;//年龄
private int height;//身高
private String education;//学历
private Lady.Cup cup;//????
}
}
好的,我都不知道需要加什么注解。最后调用代码。
Lady lady = new LadyBuilder()
.setName("小瑶妹")
.setAge(18)
.setHeight(155)
.setEducation("本科")
.setCup(Lady.Cup.A)
.create();
lady.show();
请开始您的表演,小瑶妹~~
01-10 15:02:06.582 18093-18093/com.hzly.text I/Lady: 我叫小瑶妹, 今年18岁~, 身高155cm, 本科毕业, 那个~~~~~罩杯是。。。A-Cup yeah!!
OVER
我的天Builder好简单。。